Python对字符串操作的默认宽度设置是什么?与“0”有什么不同?

2024-04-25 23:39:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始进入编程领域,还不能破解我从中得到的答案Python.org网站在这个问题上,似乎以前没人问过这个问题。你知道吗

我想找出

"You have $%.2f left in your piggy bank" % totalCash

以及

"You have $%0.2f left in your piggy bank" % totalCash

根据我正在学习的书(Python Programming:An Introduction to Computer Science,by John Zelle):“您可以使用0宽度来表示“使用所需的空间”。没有意义的是,它已经使用了所需的空间。如果我在变量中输入100000.42,它仍然以正确的空间量打印它,不管我是否将“0”作为宽度。你知道吗

输出相同。你知道吗

所以在我看来,“0”是默认的宽度集,但是我看了上面的文档Python.org网站他们说了同样的话,但用了一些我听不懂的高科技词汇

“在宽度字段前面加一个零('0')字符可启用数字类型的符号识别零填充。这相当于填充字符“0”,对齐类型为“=”

我一点也不明白,但我明白下一行,听起来和我认为的“0”是一样的:

“宽度是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定。“你知道吗

有什么区别,有人能解释吗?你知道吗

我使用的是python2.7


Tags: inorgyou类型your宽度网站have
2条回答

必须在{cd1}后面加上{cd2}:

>>> "You have $%08.2f left in your piggy bank" % 1.2
'You have $00001.20 left in your piggy bank'
>>> "You have $%08.2f left in your piggy bank" % 10.2
'You have $00010.20 left in your piggy bank'

请注意,这两种方法都不是现在做事情的正确方法。现在我们使用string formatting,但存在类似的格式。你知道吗

基本上,使用0意味着如果您的数据短于您的宽度,它将用零填充来填充宽度。你知道吗

>>> "{:8}".format(12)
'      12'
>>> "{:08}".format(12)
'00000012'   # different when data is shorter than width
>>> "{:8}".format(1234567890)
'1234567890'
>>> "{:08}".format(1234567890)
'1234567890' # no difference when data is longer than width

在旧式string interpolation中,这将是:

>>> "%8d" % 12
'      12'
>>> "%08d" % 12
'00000012'
>>> "%8d" % 1234567890
'1234567890' # still no change
>>> "%08d" % 1234567890
'1234567890' # when data is longer than width

相关问题 更多 >