我有一个文件" 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 =="修改所有行。字符串存在于其中?
答案 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 =='会匹配。