我有一个包含%MARK%形式的“替换点”的长字符串(“模板”)(对于一个给定的标记,字符串中也可以有更多的匹配项)。我想替换这些标记,由Python字典控制(它不包含标记的%符号),如下所示:
rep_dict = { "TITLE": "This is my title", "CONTENT": "Here it is the content" }问题:简单地逐个调用replace()方法不是一个好的解决方案:前面的替换可能包含这些标记中的一个,然后不能替换!
解决方案应该足够快,因为我有很大的模板,并且我需要在一个大循环中替换其中的许多模板。我有一个非常丑陋和很长的实现,有很多find(),在替换过程中计算原始字符串中的偏移量,等等。我希望有一个更好,更紧凑,更快的解决方案。
发布于 2011-10-12 18:26:18
最简单的解决方案是
import re
re.sub(r'%(.+?)%', lambda m: rep_dict[m.group(1)], YOUR_TEMPLATE)还不够快?有人说‘不要使用正则表达式’,你就照做了?使用Python语言中的一些代码解析模板会更加复杂和缓慢(别忘了,re是用C编写的)。
https://stackoverflow.com/questions/7738562
复制相似问题