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

Python删除文本文件含指定字符串行功能失效问题求助

问题根因
  • 错误转换坏字符串列表:string_bads = str(bads)会将整个列表转为字符串格式的字面量,无法实现逐个匹配列表内违禁字符串的需求
  • 文件打开模式错误:使用w/w+模式打开原文件时会直接清空文件内容,后续循环读取不到任何行
  • 匹配逻辑写反:多处判断逻辑是匹配到违禁内容才写入文件,和「删除含违禁内容的行」的需求完全相反
  • 匹配语法错误:any判断中变量顺序写反,完全无法触发匹配规则
正确实现方案

直接使用定义好的bads列表即可,不需要转成字符串:

bads = ['IV\t', '', 'Speaker Key:\n', 'Page 1 of 1\n']

def prepText(old_file_path, new_file_path):
    with open(old_file_path, 'r', encoding='utf-8') as old_f, open(new_file_path, 'w', encoding='utf-8') as new_f:
        for line in old_f:
            # 只要行包含任意一个违禁字符串,就跳过不写入
            if not any(bad_str in line for bad_str in bads):
                new_f.write(line)

如果需要直接修改原文件(建议提前备份避免数据丢失),可以读完所有符合要求的行之后再覆盖写入原文件:

def prepText(file_path):
    # 先读取所有符合要求的行
    valid_lines = []
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            if not any(bad_str in line for bad_str in bads):
                valid_lines.append(line)
    # 再覆盖写入原文件
    with open(file_path, 'w', encoding='utf-8') as f:
        f.writelines(valid_lines)
验证读取方法

调用函数后用以下代码验证结果即可:

with open("newfile", encoding='utf-8') as good_one:
    lines = good_one.readlines()
print(lines)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:45:03