将具有所需值的字符串中的''<'`替换为开头,将''>'`替换为结尾短语

时间:2018-11-28 04:35:54

标签: python string replace tuples

所以说我有一个简单的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'

5 个答案:

答案 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'
>>>