用Python删除含有特定字符串的行

以下 Python 代码含义为处理 input.txt文件,删除其中含有“##”、“- ”的行,并生成 output.txt 文件

  • 处理文本对象文件名 input_filename,默认为 input.txt
  • 生成文本对象文件名 output_filename,默认为 output.txt
  • 排除项列表 exc_list,每个元素为 exc
  • 排除项 exc,意为删除含有该字符串的行

一般用下面这个就行,也方便扩展

import sys

exc_list = ["##", "- "]   # 要删除含有特定字符串列表
input_filename = 'input.txt'   # 输入文件名
output_filename = 'output.txt'   # 输出文件名

# 接收命令行传递的文件名参数
if len(sys.argv) == 2:
    input_filename = sys.argv[1]

with open(input_filename, 'r', encoding='utf-8-sig') as input_file:
    with open(output_filename, 'w', encoding='utf-8') as output_file:
        for line in input_file:
            exclude = False
            for exc in exc_list:
                if exc in line:
                    exclude = True
                    break
            if not exclude:
                output_file.write(line)

如果仅考虑删除含有特定字符串的行,不考虑后续扩展,可以精简至如下

import sys

exc_list = ["##", "- "]   # 要删除含有特定字符串列表
input_filename = 'input.txt'   # 输入文件名
output_filename = 'output.txt'   # 输出文件名

# 接收命令行传递的文件名参数
if len(sys.argv) == 2:
    input_filename = sys.argv[1]

with open(input_filename, 'r', encoding='utf-8-sig') as input_file, \
        open(output_filename, 'w', encoding='utf-8') as output_file:
    lines = [line for line in input_file if not any(exc in line for exc in exc_list)]
    output_file.writelines(lines)

最后在命令行窗口输入以下命令运行 py 文件

python <py文件名> [处理文本对象文件名]
::如python delete_specific_rows.py input.txt
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值