Python字符串格式 - 用参数替换和增量

时间:2017-11-23 02:24:00

标签: python python-3.x string-formatting

鉴于以下字符串模板和所需结果,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。

3 个答案:

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