Python 2.x查找并替换多行文本

时间:2014-11-06 02:22:50

标签: python-2.7

我知道这里存在很多关于使用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'))

此外,获得另一个换行似乎有问题,我不想要。有什么想法或帮助吗?

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