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

时间:2018-09-27 19:42:53

标签: 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 = apple'
sample_str.format(nvars_test_2) # KeyError: 'nvars'

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

3 个答案:

答案 0 :(得分:1)

非常感谢您的指导。我做了更多的搜索。对于可能遇到相同问题的任何人,请在此处查看示例:https://pyformat.info

sample_str = 'sample_str_{nvars}'
nvars_test_2 = {'nvars':'apple'} 
sample_str.format(**nvars_test_2)  #Successful Result: ''sample_str_apple''

答案 1 :(得分:0)

首先,我建议您查看string format示例。

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

'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
# returns 'Coordinates: 37.24N, -115.81W'

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

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

(我认为)不命名那些花括号的参数更为常见-至少更容易阅读。

print('sample_str_{}'.format("apple"))应该返回'sample_str_apple'

答案 2 :(得分:0)

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

FROM imagename:2.5

请注意,文字期望变量已经存在。否则会出现错误。

>>> greeting = 'hello'
>>> name = 'Jane'
>>> f'{greeting} {name}'
'hello Jane'