在Python中,如何在format()中传递变量?

在Python中,如何在format()中传递变量?,python,Python,我希望能够在format()括号中使用变量,以便在函数中对其进行参数化。提供以下示例: sample_str = 'sample_str_{nvars}' nvars_test = 'apple' sample_str.format(nvars = nvars_test) #Successful Result: ''sample_str_apple'' 但以下措施并不奏效— sample_str = 'sample_str_{nvars}' nvars_test_2 = 'nvars = a

我希望能够在format()括号中使用变量,以便在函数中对其进行参数化。提供以下示例:

sample_str = 'sample_str_{nvars}'
nvars_test = 'apple'
sample_str.format(nvars = nvars_test)  #Successful Result: ''sample_str_apple''
但以下措施并不奏效—

sample_str = 'sample_str_{nvars}'
nvars_test_2 = 'nvars = apple'
sample_str.format(nvars_test_2) # KeyError: 'nvars'

有人知道怎么做吗?谢谢。

非常感谢您的指导。我做了更多的搜索。对于可能遇到相同问题的任何人,请参见以下示例:


首先,我建议您查看这些示例

您的第一个示例按预期工作。从文档中,您可以实际命名要传递到
{}
中的对象,然后为
str.format()
传递相同的命名变量:

您的第二个示例不起作用,因为您没有使用
str.format()
在中传递名为
nvars
的变量-您传递的是字符串:
'nvars=apple'

sample_str = 'sample_str_{nvars}'
nvars_test_2 = 'nvars = apple'
sample_str.format(nvars_test_2) # KeyError: 'nvars'
(我认为)不命名那些花括号的参数更常见一些——至少更容易阅读


print('sample\u str\u{}).format(“apple”)
应该返回
'sample\u str\u apple'

如果您使用的是Python 3.6,那么您还可以访问Python的格式化字符串文本

sample_str = 'sample_str_{nvars}'
nvars_test_2 = 'nvars = apple'
sample_str.format(nvars_test_2) # KeyError: 'nvars'
>>> greeting = 'hello'
>>> name = 'Jane'
>>> f'{greeting} {name}'
'hello Jane'
请注意,文本期望变量已经存在。否则会出现错误

>>> f'the time is now {time}'
NameError: name 'time' is not defined

请尝试:
{0}
。正如第一个示例中的add dictionary一样,它是有效的。在第二个例子中,您添加了列表,所以您需要放置位置。我想提及流行的建议,但实际上,这更像是“将变量名排除在数据之外”!在任何情况下,变量名和数据都是正交的,最好不要把它们混在一起太多。@wim这并不比用文件化的参数名定义函数更糟糕。不要在问题本身中回答你的问题。发布正确答案或删除问题。@chepner是的。行
nvars\u test\u 2='nvars=apple'
有一个变量名(
nvars
)隐藏在一个数据字符串中(对象
'nvars=apple'
)。
>>> f'the time is now {time}'
NameError: name 'time' is not defined