我知道这里存在很多关于使用python 2查找和替换文件中的文本的问题。但是对于python来说是一个非常新的,我不理解语法,可能目的也会不同。
我正在寻找一些非常简单的代码行,如linux shellscript
sed -i 's/find/replace/' *.txt
sed -i 's/find2/replace2/' *.txt
此代码是否可以替换多行文字
with open('file.txt', 'w') as out_file:
out_file.write(replace_all('old text 1', 'new text 1'))
out_file.write(replace_all('old text 2', 'new text 2'))
此外,获得另一个换行似乎有问题,我不想要。有什么想法或帮助吗?
答案 0 :(得分:2)
因此,使用Python,最简单的方法是将文件中的所有文本读入字符串。然后使用该字符串执行任何必要的替换。然后将整个内容写回同一个文件:
filename = 'test.txt'
with open(filename, 'r') as f:
text = f.read()
text = text.replace('Hello', 'Goodbye')
text = text.replace('name', 'nom')
with open(filename, 'w') as f:
f.write(text)
replace
方法适用于任何字符串,并替换第一个参数与第二个参数的任何(区分大小写)匹配。您只需两个不同的步骤即可阅读和写入同一文件。
答案 1 :(得分:2)
这是一个快速示例。如果您想要更强大的搜索/替换,可以使用正则表达式而不是string.replace
import fileinput
for line in fileinput.input(inplace=True):
newline = line.replace('old text','new text').strip()
print newline
将上面的代码放在所需的文件中,比如说sample.py,并假设你的python在你的路径中,你可以运行:
python sample.py inputfile
这将在inputfile中用'new text'替换'old text'。当然,您也可以传递多个文件作为参数。见https://docs.python.org/2/library/fileinput.html