所以说我有一个简单的python字符串:
s='Hello I am <name>, and i love to eat <food>'
所以我想删除具有所需值的'<name>'
和'<food>'
样式短语。
我也有一个tuple
:
r=('Jon Doe', 'Pizza')
所以我想按顺序用r
值替换这些短语。
所以期望的结果是:
'Hello I am Jon Doe and i love to eat Pizza'
答案 0 :(得分:2)
另一种方式
>>> import re
>>> r = {'name': 'Jon Doe', 'food': 'Pizza'}
>>> s = 'Hello I am <name>, and i love to eat <food>'
>>> re.sub('<(\w+)>', lambda match: t[match.groups()[0]], s)
'Hello I am Jon Doe, and i love to eat Pizza'
答案 1 :(得分:1)
您可以使用str.replace
将其转换为可格式化的字符串,并使用str.format
进行填充:
>>> s = s.replace("<", "{").replace(">", "}")
>>> r=('Jon Doe', 'Pizza')
>>> s.format(name=r[0], food=r[1])
'Hello I am Jon Doe, and i love to eat Pizza'
使用循环并替换整个标签:
>>> for key, value in zip(("name", "food"), r):
... s = s.replace("<{}>".format(key), value)
...
>>> s
'Hello I am Jon Doe, and i love to eat Pizza'
答案 2 :(得分:1)
使用替换:
equals
更新:我的以上回答比另一个相同的回答晚了8分钟。所以这是一个变体:
s='Hello I am <name>, and i love to eat <food>'
r = ('John Doe','Pizza')
print(s.replace('<','{').replace('>','}').format(name=r[0],food=r[1]))
答案 3 :(得分:1)
此示例字符串是否固定?
s ='你好,我爱吃东西'
如果您可以使用{和}而不是<和>进行编写,那么简单的格式就可以完成这项工作。
s = 'Hello I am {name}, and i love to eat {food}'
name, food = ('Jon Doe', 'Pizza')
print print s.format(name=name, food=food)
答案 4 :(得分:0)
str.join
+ str.split
:因此,只需将字符串用空格分开,然后对其进行遍历,如果迭代器的值以'<'
开头并以'>'
结尾,只需将其设为%s
,那么您%
和元组r
。
1。 %s
:
>>> s=' '.join([i if i[0]!='<' and i[-1]!='>' else '%s' for i in s.split()])
>>> s%r
'Hello I am Jon Doe and i love to eat Pizza'
>>>
2。 str.format
:
>>> s=' '.join([i if i[0]!='<' and i[-1]!='>' else '{}' for i in s.split()])
>>> s.format(*r)
'Hello I am Jon Doe and i love to eat Pizza'
>>>