在文本文件中查找/替换两个单词之间的字符串

时间:2018-04-03 07:09:25

标签: python string

我有一个这样的文本文件:

line 1
line 2
line 3
CommandLine arguments "render -h 192.168.1.1 -u user -p pass"
line 5

我想替换IP地址并就地编写文件。棘手的部分是,行可能的顺序不同,命令行参数可能以不同的顺序写入。所以我需要找到以 CommandLine 开头的行,然后替换 -h 和下一个 - 之间的字符串。

到目前为止,我能够使用以下代码获取旧IP地址,但我不知道如何替换它并编写文件。我是Python的初学者。

with open(the_file,'r') as f:
    for line in f:
        if(line.startswith('CommandLine')):
            old_ip = line.split('-h ')[1].split(' -')[0]
            print(old_ip)

2 个答案:

答案 0 :(得分:2)

使用fileinput

尝试此操作
{{1}}

答案 1 :(得分:0)

您可以尝试使用此替换字符:

with open(the_file,'r') as f:
   for line in f:
      if(line.startswith('CommandLine')):
           replaced_line = re.sub('(?<=-h).*?(?=-u)', 'NEW IP',line, 
                       flags=re.DOTALL)

它将使行如下:

CommandLine arguments "render -h NEW IP -u user -p pass"

您可以尝试使用fileinput的另一种方法,它将使用您要添加的内容替换旧的IP并将其写入您的文件。

更新:

问题在于if条件现在我的第一个正则表达式你可以管理如果:

for line in fileinput.input("file.txt", inplace=True):
    print(re.sub('(?<=-h).*?(?=-u)',' newIp ',line.strip()), end='\n')

注意:在新IP中添加空间