我有一个这样的文本文件:
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)
答案 0 :(得分:2)
{{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中添加空间