【发布时间】:2011-10-12 10:22:08
【问题描述】:
我有一个长字符串(一个“模板”),其中包含 %MARK% 形式的“替换点”(单个给定标记的字符串中也可能出现更多次)。我想替换这些由 Python 字典控制的标记(它不包含标记的 % 符号),例如:
rep_dict = { "TITLE": "This is my title", "CONTENT": "Here it is the content" }
问题:简单的逐个调用replace()方法不是很好的解决方案:之前的替换可能包含这些标记之一,那么不能替换!
解决方案应该足够快,因为我有很大的模板,我需要在一个大循环中替换其中的许多。我有一个非常丑陋且冗长的实现,其中包含许多 find(),在替换过程中计算原始字符串中的偏移量等。我希望有一个更好、更紧凑和更快的解决方案。
【问题讨论】:
-
很遗憾您使用 %MARK% 而不是 {MARK},因为您可以在字典中使用传统的字符串格式。也可以使用 ${MARK} 或 $MARK 使用字符串模板。
-
@joaquin 你的意思是
%(MARK)还是{MARK}?%...表示法已弃用,{...}表示法要求他使用双纯文本花括号:{{these braces make it to the output string}}, {these do not}。 -
不,我指的不是
%的插值(顺便说一句,它还没有消失的日期,尽管说了些什么),而是string.Template。我重新编辑并完成了我的评论