python - 使用文件输入库查找和替换程序不起作用
问题描述
import fileinput
with fileinput.FileInput('FILE_PATH_ON_MY_COMPUTER', inplace=True, backup='') as file:
for line in file:
print(line.replace(", uh,", ""), end='')
for line in file:
print(line.replace(", uh", ""), end='')
for line in file:
print(line.replace(" uh,", ""), end='')
我正在尝试使用 fileinput 库来查找和替换 txt 文件中的匹配文本。我希望它能够查找和替换多个字符串,而不仅仅是一个。因此,我试图将它们全部放入一个程序中。但是,当我为每个打印语句(如代码所示)设置一个单独的 for 循环时,它只会替换第一个关键字。当我保留一个 for 循环并将所有打印行放在它下面时,生成的 txt 文件是一大堆垂直间隔很远的重复行。如何让程序在不失败的情况下查找和替换多个项目?我的代码中的逻辑错误是什么?
谢谢您的帮助
解决方案
file
是一个迭代器,因此您不能多次迭代它。
要么使用
from itertools import tee
file1, file2, file3 = tee(file, n=3)
或者一次性完成所有替换:
for line file:
print(line.replace(", uh,", ""), end='').replace(", uh", ""), end='').replace(" uh,", ""), end=''))
或者(最好)使用正则表达式,如
import re
rx = re.compile(r',? uh,?')
for line in file:
print(rx.sub('', line))
推荐阅读
- python - Select a random subset of data
- python - 无法将函数与同一类中的数组匹配(无属性)
- hibernate - 轴突不正确地处理合并的段
- c++ - 为什么 Glib::VariantBase::store 方法会破坏给定缓冲区的开始
- kubernetes - 基于 X-Forwarded-Prefix 的 Nginx Ingress Route 流量
- sql - SQL 比较组之间的行并显示缺失的行
- angular - primeng 下拉菜单不显示值
- sql - 由于 174 个 UNION ALL 语句,SQL Server 查询 SSIS 转换超时
- typescript - Typescript 中的胖箭头函数
- reactjs - PayPal React 在更改金额后显示额外的按钮