gpt4 book ai didi

python - python格式化字符串中标点符号的使用

转载 作者:太空狗 更新时间:2023-10-30 02:11:32 25 4
gpt4 key购买 nike

所以我对 python 中的 .format 机制感到困惑。 (我目前使用的是 2.7.6)

所以,这显然有效:

>>> "hello {test1}".format(**{'test1': 'world'})
'hello world'

也是如此:

>>> "hello {test_1}".format(**{'test_1': 'world'})
'hello world'

但两者都不是:

>>> "hello {test:1}".format(**{'test:1': 'world'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'test'

也不是:

>>> "hello {test.1}".format(**{'test.1': 'world'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'test'

工作。

但出于某种原因,以下内容确实如此:

>>> "hello {test:1}".format(**{'test': 'world'})
'hello world'

所以看起来被替换的字符串中的变量名不能有冒号 : 或句点 . 。有什么办法可以逃脱这些角色吗?我希望从字典中替换的字符串偶尔有一个句点或两个句点或冒号。

最佳答案

这是因为您可以使用格式迷你语言来访问对象的属性。例如,我经常在自己的自定义类工作中使用它。假设我已经为我需要使用的每台计算机定义了一个类。

class Computer(object):
def __init__(self,IP):
self.IP = IP

现在我想对各种计算机做点什么

list_comps = [Computer(name,"192.168.1.{}".format(IP)) for IP in range(12)]

for comp in list_comps:
frobnicate(comp) # do something to it
print("Frobnicating the computer located at {comp.IP}".format(comp=comp))

现在打印出来

Frobnicating the computer located at 192.168.1.0
Frobnicating the computer located at 192.168.1.1
Frobnicating the computer located at 192.168.1.2 # etc etc

因为每次,它都会找到我传递给格式化程序 (comp) 的对象,获取它的属性 IP,然后改用它。在您的示例中,您为格式化程序提供了一些看起来像属性访问器 (.) 的东西,因此它会尝试访问在访问器之前给定的对象,然后查找其定义的属性。

您的最后一个示例之所以有效,是因为它正在寻找 test,并且找到了! : 符号对格式化程序来说是特殊的,因为它标志着 kwarg 的结束和格式迷你语言的开始。例如:

>>> x = 12.34567
>>> print("{x:.2f}".format(x))
12.34

: 之后的 .2f 告诉字符串格式化程序将参数 x 视为 float 并且在小数点后 2 位数字后截断它。这是 well documented,我强烈建议您仔细阅读此内容并将其加入书签以备将来使用!很有帮助!

关于python - python格式化字符串中标点符号的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com