用于替换特定行中的字符串的Python脚本

时间:2015-03-23 13:55:08

标签: python string replace

我有一个文件" xyz.txt"我正在编写一个python脚本来替换特定行中的字符串。所以基本上我有一个字符串说 x ==在一行中我想用x == 10替换。 在另一行,我有xx == 5我不想替换。

当我使用命令 -

for line in fileinput.input([filename],inplace=True):
    line.replace(old string, new string) 

其中,

old string = "x =="
new string = "x == 5". 

这最终会替换我不想修改xx == 5的其他行。

使用x ==修改某一特定行的最佳方法是什么? 而不是用" x =="修改所有行。字符串存在于其中?

4 个答案:

答案 0 :(得分:4)

你可以在这里使用正则表达式。

with open(file) as f:
    print(re.sub(r'(?m)^x == *$', 'x == 10', f.read()))

答案 1 :(得分:1)

如果我按字面意思回答标题问题,

blacklist = [... list unwanted line numbers ...]
for lineno, line in enumerate(fileinput.input([filename],inplace=True): 
    if lineno not in blacklist:
        line.replace(old string, new string)

但另一个答案表明正则表达式可能就是你真正想做的事情。

答案 2 :(得分:0)

Avinash提出的解决方案可能是最好的,但这是一个更容易理解的解决方案:

for line in fileinput.input([filename],inplace=True):
    if line.startswith(old string):
        line.replace(old string, new string) 

答案 3 :(得分:0)

你可以做这样的事情

import re
f = open("C:/Users/Superman/Desktop/krypton.log")
data = f.read()
replaced_line = re.sub(r'\sx ==', ' x==10', data)
print(replaced_line)

使用re我们可以在python中做正则表达式。 \ s将匹配空格,因此xx == 5将不匹配。只有' X =='会匹配。