我想替换文件中的一行,但我的代码没有做我想要的。代码不会更改该行。似乎问题是输入.txt中ALS和4277个字符之间的空格。我需要在文件中保留该空间。我该如何修复我的代码?
input.txt的一部分:
ALS 4277
代码的相关部分:
for lines in fileinput.input('input.txt', inplace=True):
print(lines.rstrip().replace("ALS"+str(4277), "KLM" + str(4945)))
期望的输出:
KLM 4945
答案 0 :(得分:2)
使用与其他用户已经指出的相同的想法,您还可以通过首先匹配间距并将其保存在变量(我的代码中为spacing
)中来重现相同的间距:
import re
with open('input.txt') as f:
lines = f.read()
match = re.match(r'ALS(\s+)4277', lines)
if match != None:
spacing = match.group(1)
lines = re.sub(r'ALS\s+4277', 'KLM%s4945'%spacing, lines.rstrip())
print lines
答案 1 :(得分:1)
随着空格的变化,您需要使用正则表达式来计算空格。
import re
lines = "ALS 4277 "
line = re.sub(r"(ALS\s+4277)", "KLM 4945", lines.rstrip())
print(line)
答案 2 :(得分:0)
尝试:
with open('input.txt') as f:
for line in f:
a, b = line.strip().split()
if a == 'ALS' and b == '4277':
line = line.replace(a, 'KLM').replace(b, '4945')
print(line, end='') # as line has '\n'