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

使用Python re模块处理文本后保存到txt仅写入单行而非全文的问题

问题原因

你的修改后代码存在3个核心问题:

  • 变量x在循环中每次被新的行处理结果覆盖,循环结束后x仅保留了最后一行的处理结果,自然只能保存单行内容
  • 你注释了file_name2的输入代码,变量未定义会直接报错(如果你的实际运行代码已经取消注释可忽略这条)
  • with上下文管理器会自动关闭文件,不需要手动调用p.close(),属于冗余代码

解决方案

方案1:逐行处理逐行写入

打开读写两个文件,处理一行就写入一行,内存占用低适合大文件:

import re

file_name = input("请输入你的txt文件路径: ")
file_name2 = input("请输入保存结果的txt文件路径: ")

# 新增encoding参数避免不同系统下出现编码乱码问题
with open(file_name, 'r', encoding='utf-8') as read_f, open(file_name2, 'w', encoding='utf-8') as write_f:
    for line in read_f:
        processed_line = re.sub(r"[^a-zA-Z0-9]+", ' ', line)
        # 加换行符保持原文件的行结构
        write_f.write(processed_line + '\n')

方案2:先收集所有处理结果再统一写入

适合小文件,逻辑更直观:

import re

file_name = input("请输入你的txt文件路径: ")
file_name2 = input("请输入保存结果的txt文件路径: ")
processed_lines = []

with open(file_name, 'r', encoding='utf-8') as read_f:
    for line in read_f:
        processed_lines.append(re.sub(r"[^a-zA-Z0-9]+", ' ', line))

with open(file_name2, 'w', encoding='utf-8') as write_f:
    write_f.write('\n'.join(processed_lines))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:54:05