python中的高级字符串替换

时间:2014-11-10 13:15:46

标签: python regex string

我在python脚本中有一些字符串,它们看起来像

<tag1> thisIsSomeText <otherTag>, <tag1>!

我想解析这些行,并用字典中的字符串替换每个标记。

假设我的dict看起来像:

tag1: Hello
otherTag: Goodbye

然后输出行应如下所示:

Hello thisIsSomeText Goodbye, Hello!

可以看出,标签(及其大括号)已被替换。多次出现是可能的。

在C中,我会搜索'&lt;',记住它的位置,搜索'&gt;',做一些难看的字符串操作...... 但我想,Python有更好的解决方案。

也许正则表达式?好吧,我希望我的任务很简单,我可以在没有正则表达式的情况下解决。但我没有计划如何从Python开始。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

re.sub不仅接受字符串,还接受作为第二个参数的替换函数。该函数接受匹配对象,函数的返回值用作替换字符串。

>>> import re
>>> mapping = {'tag1': 'Hello', 'otherTag': 'Goodbye'}
>>> re.sub(r'<(\w+)>', lambda m: mapping[m.group(1)],
...        '<tag1> thisIsSomeText <otherTag>, <tag1>!')
'Hello thisIsSomeText Goodbye, Hello!'

答案 1 :(得分:0)

for i in dictionary.keys():
    string.replace('<'+i+'>',dictionary[i]]