用Python替换文件中的文本
问题内容:
我是Python的新手。我希望能够打开一个文件,并通过Python用给定的替换项替换某些单词的每个实例。例如,假设将每个单词“零”替换为“
0”,将“临时”替换为“ bob”,然后将“垃圾”替换为“无”。
我首先开始使用它:
for line in fileinput.input(fin):
fout.write(line.replace('zero', '0'))
fout.write(line.replace('temp','bob'))
fout.write(line.replace('garbage','nothing'))
但我认为这不是实现这一目标的正确方法。然后,我考虑过要执行if语句来检查该行是否包含这些项,如果包含,则替换该行包含的项,但是据我所知,这也不是一个理想的解决方案。我想知道最好的方法是什么。提前谢谢!
问题答案:
这应该做
replacements = {'zero':'0', 'temp':'bob', 'garbage':'nothing'}
with open('path/to/input/file') as infile, open('path/to/output/file', 'w') as outfile:
for line in infile:
for src, target in replacements.iteritems():
line = line.replace(src, target)
outfile.write(line)
编辑
:要解决Eildosa的评论,如果您要执行此操作而不写另一个文件,那么最终将不得不将整个源文件读入内存:
lines = []
with open('path/to/input/file') as infile:
for line in infile:
for src, target in replacements.iteritems():
line = line.replace(src, target)
lines.append(line)
with open('path/to/input/file', 'w') as outfile:
for line in lines:
outfile.write(line)
编辑: 如果您使用的是Python
3.x,请使用replacements.items()
代替replacements.iteritems()