python - 替换 %variables% 的正则表达式

标签 python regex

为了这个,我已经用了 30 分钟把一撮头发拉出来......

我有一本字典,像这样:

{'search': 'replace',
 'foo':    'bar'}

还有这样的字符串:

Foo bar %foo% % search %.

我想用字典中的等效文本替换每个变量:

Foo bar bar replace.

我当前的正则表达式失败了,所以这里是(keyvalue 来自 dictionary.items()):

 re.sub(r'%\d+' + key + '[^%]\d+%', value, text)

任何帮助将不胜感激,因为这个正则表达式的东西让我发疯......

最佳答案

如果您对字符串中的语法很灵活,Python 有一个内置的机制:

>>> print 'Hello, %(your_name)s, my name is %(my_name)s' % {'your_name': 'Blender', 'my_name': 'Ken'}
Hello, Blender, my name is Ken

或者,如果您想要那种语法,我会避免使用正则表达式,只需这样做:

>>> vars = {'search': 'replace',
...  'foo':    'bar'}
>>> mystring = "Foo bar %foo% % search %."
>>> for k, v in vars.items():
...     mystring = mystring.replace('%%%s%%' % k, v)
... 
>>> print mystring
Foo bar bar % search %.

关于python - 替换 %variables% 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206804/

相关文章:

python - 如何比较第一列和第二列

python - 使用 QUiLoader() 加载时如何接受 MainWindow 的关闭事件?

regex - 如何将 mod_rewrite(QSA 选项)转换为 Nginx 等效项?

javascript - 用于突出显示转义字符的正则表达式

c - 正则表达式来验证C中的HTTP请求字符串?

python - 为什么 Emacs 将我的文字 Unicode 字符串弄错了?

python - 使用 Python 求解非线性微分一阶方程

python - USB 驱动器中的 PyDev 解释器指示

c# - 使用反斜杠作为模式终止符的正则表达式

regex - replaceAllMapped与span元素匹配