You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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")

关键说明:

  1. 改用with语句打开文件,无需手动调用close(),代码更安全简洁。
  2. 遍历文件的每一行,保证每行独立处理,不会出现行内容合并的问题。
  3. 对每行先做换行符清除,再执行正则替换和首尾连字符清理,最后逐行输出结果。

运行修改后的代码,就能得到预期的两行结果:

XX-X
XX-X-X

内容的提问来源于stack exchange,提问作者snf_dodgehemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:13:13