鉴于以下字符串模板和所需结果,Python中是否有一种简单的(单线型)方式来实现这一目的? 我希望在替换之后/之前增加id。
"fruit-{id} fruit-{id} fruit-{id}"
"fruit-1 fruit-2 fruit-3"
更新: 我意识到我没有很好地描述这个问题,并没有选择一个好的例子。模板通常不像水果示例那样是常规的。
可能就像......
"Lorem{id} ipsum dolor{id} sit amet, consectetur adipiscing elit{id}, sed do eiusmod{id} tempor incididunt..."
...目前还不清楚字符串中会有多少个id。
答案 0 :(得分:2)
在这种情况下,format()是你的朋友。
用法
输入 - >
'{} {}'.format('one', 'two')
|
输出 - > one two
在您的情况下,您可以通过
来使用它string = "fruit-{} fruit-{} fruit-{}".format(1, 2, 3)
print(string)
输出fruit-1 fruit-2 fruit-3
答案 1 :(得分:1)
如果您的字符串始终采用"fruit-{id} fruit-{id} fruit-{id}"
格式,则您无法使用内置str.format
,因为它依赖于不同的变量。您必须实现自己的格式函数,如下所示(使用re
模块):
def format_str(s, target="{id}"):
i = 1
while target in s:
s = re.subn(target, str(i), s, count=1)[0]
i += 1
return s
答案 2 :(得分:1)
import re
list_of_ids = ['1','2','3','4','5']
list_of_fruits = [re.sub('id',nos,'fruit-id') for nos in list_of_ids]
//['fruit-1', 'fruit-2', 'fruit-3' ...]
您可以使用列表推导和正则表达式替换项目。扭转它:
[re.sub('[0-9]','id',fruit) for fruit in list_of_fruits]