如何使用Python的readlines函数按指定格式格式化文件行?
问题描述
我的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,请问如何修改才能得到预期的正确结果?
解决方法
问题出在你把整个lines列表转成字符串处理,导致两行文本被合并成了一行。正确的做法是逐行处理每一行内容,而非一次性处理整个列表。
修改后的代码:
import re # 用with语句自动管理文件生命周期,避免遗漏关闭操作 with open("test.txt", "r") as data: for line in data: # 移除每行末尾的换行符及空白字符 stripped_line = line.strip() if not stripped_line: continue # 跳过空行 # 将非X字符替换为-,再移除首尾多余的- processed_line = re.sub(r"[^X]+", "-", stripped_line).strip("-") print(processed_line if processed_line else "No X found")
关键说明:
- 改用
with语句打开文件,无需手动调用close(),代码更安全简洁。 - 遍历文件的每一行,保证每行独立处理,不会出现行内容合并的问题。
- 对每行先做换行符清除,再执行正则替换和首尾连字符清理,最后逐行输出结果。
运行修改后的代码,就能得到预期的两行结果:
XX-X XX-X-X
内容的提问来源于stack exchange,提问作者snf_dodgehemi
相关产品推荐
相关产品推荐

