Python string.replace正则表达式

问题:

我有一个参数文件的形式

parameter-name parameter-value

其中参数可以是任何顺序,但每行只有一个参数。我想用一个新的值替换一个参数的参数值。
我使用之前发布的行替换函数(Search and replace a line in a file in Python)替换使用python的string.replace(pattern,subst)的行。我使用的正则表达式在vim中实例化,但在string.replace中似乎不起作用。这是正在使用的正则表达式:

line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))

其中interfaceOpDataFile是我正在替换的参数名称(/ i,不区分大小写),新的参数值是fileIn变量的内容。有没有办法让python来识别这个正则表达式,还是有另一种方法来完成这个任务?提前致谢。

回答:

 str.replace()不能识别正则表达式,使用正则表达式执行替换使用re.sub()
例如:

import re
line = re.sub(r"(?i)^.*interfaceOpDataFile.*$", "interfaceOpDataFile %s" % fileIn, line)

如果你在循环中这样做,最好先编译正则表达式:

import re
regex = re.compile(r"^.*interfaceOpDataFile.*$", re.IGNORECASE)
for line in some_file:
    line = regex.sub("interfaceOpDataFile %s" % fileIn, line)
    # do something with the updated line

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Python string.replace regular expression

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1 + 3 =