如何使用python替换文件中的两个单词的一行

时间:2016-10-20 09:18:29

标签: python

我想替换文件中的一行,但我的代码没有做我想要的。代码不会更改该行。似乎问题是输入.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

3 个答案:

答案 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'