Python string.replace 正则表达式

新手上路,请多包涵

我有一个形式的参数文件:

 parameter-name parameter-value

其中参数可以按任何顺序排列,但每行只有一个参数。我想用一个新值替换一个参数的 parameter-value

我正在使用 之前发布 的行替换功能来替换使用 Python 的 string.replace(pattern, sub) 的行。例如,我使用的正则表达式在 vim 中有效,但在 string.replace() 中似乎无效。

这是我正在使用的正则表达式:

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

其中 "interfaceOpDataFile" 是我要替换的参数名称(/i 表示不区分大小写),新参数值是 fileIn 变量的内容。

有没有办法让 Python 识别这个正则表达式,或者有没有另一种方法来完成这个任务?

原文由 Troy Rockwood 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 967
2 个回答

str.replace() v2 | v3不识别正则表达式。

要使用正则表达式执行替换,请使用 re.sub() v2 | v3

例如:

 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

原文由 Andrew Clark 发布,翻译遵循 CC BY-SA 3.0 许可协议

您正在寻找 re.sub 函数。

 import re
s = "Example String"
replaced = re.sub('[ES]', 'a', s)
print(replaced)

将打印 axample atring

原文由 Jacek Przemieniecki 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题