如何使用 Python 的 readlines 函数以特定模式格式化文件中的行?

How can I use Python's readlines function to format lines from a file in a specific pattern?

提问人:snf_dodgehemi 提问时间:5/30/2023 最后编辑:mkrieger1snf_dodgehemi 更新时间:5/30/2023 访问量:42

问:

我在 test.txt 文件中的数据如下所示:

XXTYSVASOOXOSJAY
CGTVHIXXHIAICXWHAYX

我正在尝试实现这样的模式:

XX-X
XX-X-X

这是我目前所拥有的:

import re

data = open("test.txt", "r")
lines = data.readlines()

result = re.sub(r"[^X]+", r"-", str(lines)).strip("-")
if "X" in result:
  print(result)
else:
  print("No X found")

这是我得到的结果,它是一行:.XX-X-XX-X-X

我怎样才能正确地做到这一点以获得预期的结果?

Python 读取行

评论

1赞 mkrieger1 5/30/2023
“How can I use readlines to format lines...” - 将文件中的文本读入字符串列表,它不格式化任何内容。readlines
0赞 nigh_anxiety 5/30/2023
扩展 mkrieger 的注释,然后将整个列表转换为单个字符串,因此变为 ,并且正在对该字符串执行操作,这也删除了 ,和 。Sedub 的答案应该有效,或者你可以这样做,然后以这种方式在每一行上运行。str(lines)['abc', 'def', 'xyz']"['abc', 'def', 'xyz']"re.sub[], readlinesfor line in lines: re.sub

答:

1赞 sedub01 5/30/2023 #1

若要设置文件中具有特定模式的行的格式,可以循环访问文件中的每一行,并将正则表达式替换应用于每一行。例如

import re

with open("test.txt", "r") as f:
    for line in f:
        result = re.sub(r"[^X]+", r"-", line).strip("-")
        print(result if "X" in result else "No X found")