在Python中替换文本文件中的文本
我想在一个文本文件中替换一些文字(我们就叫这个文件 test.txt),这里是一个示例文本:
Math is good
Math is hard
Learn good math
be good at math
DO\SOMETHING\NOW
我想要的结果是这样的:
Math is good
Math is hard
Learn good science
be good at science
DO\SOMETHING\NOW
我正在尝试用 fileinput 这个工具来实现这个功能,具体方法如下:
import fileinput
file = fileinput.input("Path/To/File/text.txt", inplace=True)
for line in file:
print(line.replace("math", "science"))
问题是,print 函数会自动加上一个换行符“\n”,所以它会跳过新的一行。我试着用 "sys.stdout.write(line.replace("math", "science"))" 来替换,但这样输出的结果在文本文件中变成了数字。那么我该怎么做才能高效地得到我想要的结果呢?我是不是应该用 open 函数逐行读取,检查一下“math”这个词出现了没,然后替换成其他词呢?任何帮助都会非常感激!
1 个回答
4
你可以通过把 print()
函数的 end
这个参数设置为空字符串,来让它不换行:
print(line.replace("math", "science"), end='')
默认情况下,end
的值是 '\n'
,也就是换行符。
另外,你也可以直接把 line
里的换行符去掉:
print(line.rstrip('\n').replace("math", "science"))