python打开一个文件并替换内容[重复]

Posted

技术标签:

【中文标题】python打开一个文件并替换内容[重复]【英文标题】:python open a file and substitute the content [duplicate] 【发布时间】:2015-10-01 05:38:27 【问题描述】:

我想打开一个 txt 文件并将所有“hello”替换为“love”并保存而不创建新文件。修改同一个txt文件中的内容即可。

我的代码只是可以在“hello”之后添加“love”,而不是替换它们。

有什么方法可以解决吗?

非常感谢

f = open("1.txt",'r+')
con = f.read()
f.write(re.sub(r'hello','Love',con))
f.close()

【问题讨论】:

***.com/questions/2424000/… 也许这就是你的问题的答案How to search and replace text in a file using Python? 【参考方案1】:

读取文件后,文件指针在文件末尾;如果你写然后,你将追加到文件的末尾。你想要类似的东西

f = open("1.txt", "r")  # open; file pointer at start
con = f.read()          # read; file pointer at end
f.seek(0)               # rewind; file pointer at start
f.write(...)            # write; file pointer somewhere else
f.truncate()            # cut file off in case we didn't overwrite enough

【讨论】:

不应该是f = open('1.txt', 'r+') ? @KhalilAmmour-خليلعمور 是的。 非常感谢。它现在可以工作了:)【参考方案2】:

您可以创建一个新文件并替换您在第一个文件中找到的所有单词,然后将它们写入第二个文件。见How to search and replace text in a file using Python?

f1 = open('file1.txt', 'r')
f2 = open('file2.txt', 'w')
for line in f1:
    f2.write(line.replace('old_text', 'new_text'))
f1.close()
f2.close()

或者,您可以使用fileinput

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    line = line.replace("hello","love")

【讨论】:

所有这些都成立,直到您必须用较长的单词替换较小的单词。在这种情况下,您必须在内存中执行此操作或使用 mmap 模块在运行时更改文件的大小,将字符移动到新位置并插入您需要的内容。对于其他情况, seek() tell() 和 truncate() 会有所帮助。 啊哈,是的,需要明确的是,您可以在没有 mmap 的情况下将文件内容移动到正确的位置,但这会更有效地杀死您和操作系统。 mmap 允许您将 RAM 或磁盘内存用作可变字符串。

以上是关于python打开一个文件并替换内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python 文件内容修改替换操作

如何使用 python 用硬链接替换重复文件?

括号之间的Python正则表达式替换[重复]

如何将 unicode 写入 txt? Python [重复]

python中如何从字符串内提取指定的字符

python按行读取并替换