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

Python提取TXT文件主题行时如何实现逐行换行格式化输出

问题根因

读取行时调用的strip()方法会移除行首尾的空白字符,包括每行末尾原本的换行符;后续写入结果文件时没有主动补充换行标记,所有提取到的主题行就会连续拼接在同一行。

修正代码

你可以直接用下面调整后的版本,除了解决换行问题,还补了几个容易踩坑的细节:

import os
ans = []

for filename in os.listdir(os.getcwd()):
    # 跳过目录、输出文件本身以及非txt格式文件,避免读文件报错
    file_path = os.path.join(os.getcwd(), filename)
    if not os.path.isfile(file_path) or filename == 'extracted_data.txt' or not filename.endswith('.txt'):
        continue
    with open(file_path, 'r', encoding='utf-8') as rf:
        for line in rf:
            stripped_line = line.strip()
            # 不区分大小写匹配主题行,覆盖Subject、subject、SUBJECT等各种大小写写法
            if stripped_line.lower().startswith("subject"):
                ans.append(stripped_line)
    
with open('extracted_data.txt', 'w', encoding='utf-8') as wf:
    for line in ans:
        # 写入时补充换行符,实现每条主题单独占一行
        wf.write(f"{line}\n")
补充说明
  • 核心修改点只有两处:一是写入每行内容时末尾拼接\n换行符,二是把重复的大小写判断合并成了不区分大小写的匹配逻辑,减少冗余代码
  • 新增的编码参数encoding='utf-8'可以避免Windows系统下默认gbk编码导致的文件乱码问题
  • 如果你不想在写入阶段加换行,也可以在收集内容到ans列表时就拼接换行符:ans.append(f"{stripped_line}\n"),最后写入时直接调用wf.writelines(ans)即可,最终效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:49:12