首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中替换基于字典的大字符串的子字符串?

如何在Python中替换基于字典的大字符串的子字符串?
EN

Stack Overflow用户
提问于 2011-10-12 18:22:08
回答 2查看 317关注 0票数 2

我有一个包含%MARK%形式的“替换点”的长字符串(“模板”)(对于一个给定的标记,字符串中也可以有更多的匹配项)。我想替换这些标记,由Python字典控制(它不包含标记的%符号),如下所示:

代码语言:javascript
运行
复制
rep_dict = { "TITLE": "This is my title", "CONTENT": "Here it is the content" }

问题:简单地逐个调用replace()方法不是一个好的解决方案:前面的替换可能包含这些标记中的一个,然后不能替换!

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

EN

Stack Overflow用户

回答已采纳

发布于 2011-10-12 18:26:18

最简单的解决方案是

代码语言:javascript
运行
复制
import re
re.sub(r'%(.+?)%', lambda m: rep_dict[m.group(1)], YOUR_TEMPLATE)

还不够快?有人说‘不要使用正则表达式’,你就照做了?使用Python语言中的一些代码解析模板会更加复杂和缓慢(别忘了,re是用C编写的)。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7738562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档