Python:替换以某模式开头的文件行
在一个文本文件中,有这么一行:
initial_mass = unknown_int
我想把这一行替换成:
initial_mass = known_int
正如名字所示,我不知道最开始的值是什么,但我想把它替换成一个我知道的值。用Python的话,我该怎么做才能找到以'initial_mass'开头的那一行,然后把整行替换成'initial_mass = known_int'呢?
我在考虑这样的思路:
import fileinput
for line in fileinput.FileInput(filename, inplace=True):
line=line.replace(old, new)
print(line),
我该怎么把old
设置为包含initial_mass = uknown_int
的那一行呢?我看过startswith()
这个方法,但不知道怎么用它来达到我的目的。我也试过正则表达式,但觉得它实在太复杂了。
这个文件并不算特别大,但我需要多次重复这个过程。
1 个回答
21
你不需要知道old
是什么;只需要重新定义整行代码就可以了:
import sys
import fileinput
for line in fileinput.input([filename], inplace=True):
if line.strip().startswith('initial_mass = '):
line = 'initial_mass = 123\n'
sys.stdout.write(line)