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

Python String Formatting - replacing parameters with and incrementation

给定以下字符串模板和所需结果,Python 中是否有一种简单的(单行式)方法可以实现此目的? 我希望 id 增加 after/before 替换。

"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。

在这种情况下 format() 是你的朋友。

用法

输入-> '{} {}'.format('one', 'two') | 输出 -> one two

在您的情况下,您可以通过

使用它
string = "fruit-{} fruit-{} fruit-{}".format(1, 2, 3)
print(string)

输出fruit-1 fruit-2 fruit-3

如果您的字符串始终采用 "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
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]