我有一个原始字符串:WORKER_TEMPLATE = "worker-{0}",如何最有效地使用该模板创建:"worker-0"、"worker-2"和"worker-N"?如果我只是使用字符串格式,我将失去原来的后,第一次格式化,因为它已经到位。是否有一种方法可以格式化未到位的字符串?
发布于 2022-09-08 15:15:36
str.format是不可变的,所以它不会更改原始的格式化字符串。
WORKER_TEMPLATE = "worker-{0}"
for i in range(5):
print(WORKER_TEMPLATE.format(i))
worker-0
worker-1
worker-2
worker-3
worker-4还可以使用相同格式的字符串定义生成器:
>>> def get_value(n=5):
... for i in range(n):
... yield WORKER_TEMPLATE.format(i)
...
>>> values = get_value()
>>> next(values)
'worker-0'
>>> next(values)
'worker-1'
>>> next(values)
'worker-2'发布于 2022-09-08 15:18:22
不,它不会。字符串在python中是不可变的,意味着一旦被分配,它就不能被替换。将此作为您的示例:
s = "worker-{0}"
s1 = s.format(1)
s2 = s.format(2)
print(s)
print(s1, s2)产出如下:
工人-{0} 工人-1名工人-2
发布于 2022-09-08 15:55:31
字符串是不可变的,因此每次修改时都会创建一个新实例,请参阅为什么字符串是不可变的。
n = 5
WORKER_TEMPLATE = "worker-{}" # <- without 0
workers = list(map(WORKER_TEMPLATE.format, range(n)))
print(workers)
#['worker-0', 'worker-1', 'worker-2', 'worker-3', 'worker-4']备注:以下是对应的内容:
s1 = "{} & {}"
print(s1.format('a', 'b'))和
s2 = "{0} & {1}"
print(s2.format('a', 'b'))“地点持有者”表示法的一个可能优点是多个相同值的替换:
print("{0} & {1} {0}".format('a', 'b'))
#a & b ahttps://stackoverflow.com/questions/73651383
复制相似问题