字符串格式.从本地环境获取关键字参数



我经常看到以下模式,并想知道是否有一种避免重复的方法。

life = 42
badger = some_function()
s = "({life}, {badger})".format(life=life,badger=badger)

本地变量通常具有与字符串中其含义相对应的连贯名称。我目前正在使用更简洁的:

s = "({0}, {1})".format(life,badger)

使用关键字通常更清晰。是否有一种通用/简洁的方法来获取格式以在包含函数的词汇环境中查找关键字?

s  = "({life}, {badger})".format(env())

谢谢!

python 3.6已经用字符串插值来解决此问题;f-strings:

>>> life = '2'
>>> badger = 'more'
>>> f'{life} {badger}'
'2 more'

如果升级不会花费太多,那么您可以朝这个方向看。

您可以使用locals()

s  = "({life}, {badger})".format(**locals())

如果您不能使用f-strings,则可以选择将locals()**kwargs参数传递形式一起使用:

>>> a = 3
>>> b = 5
>>> '{a} {b}'.format(**locals())
'3 5'

摩西的答案对于python 3

很棒

如果您需要python 2的东西,则可以尝试以下操作:

以某种方式提出了dict

In [6]: env = dict(life=42, badger='badger')
In [7]: env
Out[7]: {'badger': 'badger', 'life': 42}
In [11]: "({life}, {badger})".format(**env)
Out[11]: '(42, badger)'
In [12]: "({0}, {1})".format(*env)
Out[12]: '(life, badger)'
In [13]:

与Os.environ

的示例
In [13]: import os
In [14]: "({0}, {1})".format(*os.environ)
Out[14]: '(VIEWCLIENT_WINDOWS_TIMEZONE, VIEWCLIENT_BROKER_DOMAINNAME)'
In [15]:

免责声明:我很早和咖啡前阅读。在技术工作的同时。其他人是正确的,您可以使用当地人代替OS.Environ。

我更专注于使用 *'s

最新更新