用Python替换文件中的文本

发布于 2021-01-29 16:20:20

我是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语句来检查该行是否包含这些项,如果包含,则替换该行包含的项,但是据我所知,这也不是一个理想的解决方案。我想知道最好的方法是什么。提前谢谢!

关注者
0
被浏览
167
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这应该做

    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()



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看