Python:替换以某模式开头的文件行

11 投票
1 回答
13925 浏览
提问于 2025-04-20 16:54

在一个文本文件中,有这么一行:

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)

撰写回答