python - 如何根据Python中的字典替换大字符串的子字符串?

标签 python string replace

我有一个长字符串(一个"template"),其中包含 %MARK% 形式的“替换点”(单个给定标记在字符串中也可能出现更多次)。我想替换这些由 Python 字典控制的标记(它不包含标记的 % 符号),例如:

rep_dict = { "TITLE": "This is my title", "CONTENT": "Here it is the content" }

问题:简单地逐一调用replace()方法并不是一个好的解决方案:之前的替换可能包含这些标记之一,那么就不能替换它!

解决方案应该足够快,因为我有很大的模板,并且我需要在一个大循环中替换其中的许多模板。我有一个非常丑陋且冗长的实现,其中有许多 find()'s,在替换过程中计算原始字符串中的偏移量等。我希望有一个更好,更紧凑的,和更快的解决方案。

最佳答案

最简单的解决方案是

import re
re.sub(r'%(.+?)%', lambda m: rep_dict[m.group(1)], YOUR_TEMPLATE)

不够快?有人说“不要使用正则表达式”,你就听从了吗?使用 Python 中的某些代码解析模板会更加复杂和缓慢(不要忘记,re 是用 C 编写的)。

关于python - 如何根据Python中的字典替换大字符串的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7738562/

相关文章:

javascript - 从字符串中删除某些 HTML

mysql - 更新表字段

python - Pycharm和远程解释器(Docker)显示错误但运行正常

Python 循环通过 input().split()

python - 在 Python 中将时区感知日期时间转换为本地时间

python - XML 解析器语法错误

c - malloc-ing char* 和 char ** 时的大小困惑

javascript - 运行字符串 Javascript 中的代码

ruby-on-rails - 构建匹配链接数组

javascript - Vanilla JS,无法替换从 DOM 获取的字符串中的反斜杠