分两步在字符串中使用 .format()
use .format() in a string in two steps
我有一个字符串,我想在其中替换一些变量,但是在不同的步骤中,例如:
my_string = 'text_with_{var_1}_to_variables_{var_2}'
my_string.format(var_1='10')
### make process 1
my_string.format(var_2='22')
但是当我尝试替换第一个变量时出现错误:
KeyError: 'var_2'
我怎样才能做到这一点?
编辑:
我想创建一个新列表:
name = 'Luis'
ids = ['12344','553454','dadada']
def create_list(name,ids):
my_string = 'text_with_{var_1}_to_variables_{var_2}'.replace('{var_1}',name)
return [my_string.replace('{var_2}',_id) for _id in ids ]
这是期望的输出:
['text_with_Luis_to_variables_12344',
'text_with_Luis_to_variables_553454',
'text_with_Luis_to_variables_dadada']
但使用 .format 而不是 .replace。
你必须使用格式吗?如果没有,你可以使用string.replace吗?喜欢
my_string = 'text_with_#var_1#_to_variables_#var2#'
my_string = my_string.replace("#var_1#", '10')
###
my_string = my_string.replace("#var2#", '22')
简单来说,您不能用 {var_1}
、var_2
格式的字符串(不是全部) 使用 format
替换少数参数.尽管我不确定您为什么只想替换部分字符串,但是您可以遵循几种方法作为解决方法:
方法 1: 用 {{}}
而不是 {}
替换第二步要替换的变量。例如:将 {var_2}
替换为 {{var_2}}
>>> my_string = 'text_with_{var_1}_to_variables_{{var_2}}'
>>> my_string = my_string.format(var_1='VAR_1')
>>> my_string
'text_with_VAR_1_to_variables_{var_2}'
>>> my_string = my_string.format(var_2='VAR_2')
>>> my_string
'text_with_VAR_1_to_variables_VAR_2'
方法 2: 使用 format
替换一次,使用 %
.
替换一次
>>> my_string = 'text_with_{var_1}_to_variables_%(var_2)s'
# Replace first variable
>>> my_string = my_string.format(var_1='VAR_1')
>>> my_string
'text_with_VAR_1_to_variables_%(var_2)s'
# Replace second variable
>>> my_string = my_string % {'var_2': 'VAR_2'}
>>> my_string
'text_with_VAR_1_to_variables_VAR_2'
方法 3: 将 args
添加到 dict
并在需要时解压。
>>> my_string = 'text_with_{var_1}_to_variables_{var_2}'
>>> my_args = {}
# Assign value of `var_1`
>>> my_args['var_1'] = 'VAR_1'
# Assign value of `var_2`
>>> my_args['var_2'] = 'VAR_2'
>>> my_string.format(**my_args)
'text_with_VAR_1_to_variables_VAR_2'
使用满足您要求的那个。 :)
我有一个字符串,我想在其中替换一些变量,但是在不同的步骤中,例如:
my_string = 'text_with_{var_1}_to_variables_{var_2}'
my_string.format(var_1='10')
### make process 1
my_string.format(var_2='22')
但是当我尝试替换第一个变量时出现错误:
KeyError: 'var_2'
我怎样才能做到这一点?
编辑: 我想创建一个新列表:
name = 'Luis'
ids = ['12344','553454','dadada']
def create_list(name,ids):
my_string = 'text_with_{var_1}_to_variables_{var_2}'.replace('{var_1}',name)
return [my_string.replace('{var_2}',_id) for _id in ids ]
这是期望的输出:
['text_with_Luis_to_variables_12344',
'text_with_Luis_to_variables_553454',
'text_with_Luis_to_variables_dadada']
但使用 .format 而不是 .replace。
你必须使用格式吗?如果没有,你可以使用string.replace吗?喜欢
my_string = 'text_with_#var_1#_to_variables_#var2#'
my_string = my_string.replace("#var_1#", '10')
###
my_string = my_string.replace("#var2#", '22')
简单来说,您不能用 {var_1}
、var_2
格式的字符串(不是全部) 使用 format
替换少数参数.尽管我不确定您为什么只想替换部分字符串,但是您可以遵循几种方法作为解决方法:
方法 1: 用 {{}}
而不是 {}
替换第二步要替换的变量。例如:将 {var_2}
替换为 {{var_2}}
>>> my_string = 'text_with_{var_1}_to_variables_{{var_2}}'
>>> my_string = my_string.format(var_1='VAR_1')
>>> my_string
'text_with_VAR_1_to_variables_{var_2}'
>>> my_string = my_string.format(var_2='VAR_2')
>>> my_string
'text_with_VAR_1_to_variables_VAR_2'
方法 2: 使用 format
替换一次,使用 %
.
>>> my_string = 'text_with_{var_1}_to_variables_%(var_2)s'
# Replace first variable
>>> my_string = my_string.format(var_1='VAR_1')
>>> my_string
'text_with_VAR_1_to_variables_%(var_2)s'
# Replace second variable
>>> my_string = my_string % {'var_2': 'VAR_2'}
>>> my_string
'text_with_VAR_1_to_variables_VAR_2'
方法 3: 将 args
添加到 dict
并在需要时解压。
>>> my_string = 'text_with_{var_1}_to_variables_{var_2}'
>>> my_args = {}
# Assign value of `var_1`
>>> my_args['var_1'] = 'VAR_1'
# Assign value of `var_2`
>>> my_args['var_2'] = 'VAR_2'
>>> my_string.format(**my_args)
'text_with_VAR_1_to_variables_VAR_2'
使用满足您要求的那个。 :)