Python 3.x中整个文本文件的字符串替换?

时间:2010-06-02 20:55:44

标签: python string python-3.x replace

如何在给定的文本文件中用另一个字符串替换字符串。我是否只是循环读取readline()并在保存到新文件的同时运行替换?或者有更好的方法吗?

我想我可以将整个内容读入内存,但我正在寻找更优雅的解决方案......

提前致谢

3 个答案:

答案 0 :(得分:11)

fileinput是Python标准库中的模块,支持“看起来像文本文件的就地更新”以及各种其他相关任务。

for line in fileinput.input(['thefile.txt'], inplace=True):
    print(line.replace('old stuff', 'shiny new stuff'), end='')

此代码是您提到的特定任务所需的所有 - 它处理所有问题(写入不同的文件,完成后删除旧文件并用新文件替换它)一)。您还可以添加其他参数(例如backup='.bk')以自动保留旧文件(在本例中为thefile.txt.bk),以及处理多个文件,从命令行处理文件名等,等 - 阅读文档,它们非常好(我建议的模块也是如此!)。

答案 1 :(得分:4)

如果文件可以立即读入内存,我会说

old = myfile.read()
new = old.replace("find this", "replace by this")
output.write(new)

至少与

一样可读
for line in myfile:
   output.write(line.replace("find this", "replace by this"))

它可能会快一点,但最终它可能并不重要。

答案 2 :(得分:0)

请参阅Recipe 52250: Search and replace text in a file.

上的最后一个列表