Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是Python';s字符串操作的默认宽度设置以及与“;0";?_Python_String_Width_Operations - Fatal编程技术网

什么是Python';s字符串操作的默认宽度设置以及与“;0";?

什么是Python';s字符串操作的默认宽度设置以及与“;0";?,python,string,width,operations,Python,String,Width,Operations,我刚开始接触编程,还不能解释我从Python.org上得到的关于这个问题的答案,而且看起来以前没有人问过这个问题 我正试图找出两者之间的区别 "You have $%.2f left in your piggy bank" % totalCash 及 根据我正在学习的书(《Python编程:计算机科学导论》,John Zelle):“可以使用0宽度表示”根据需要使用尽可能多的空间。“没有意义的是,它已经在使用所需的空间。如果我把100000.42放在变量中,不管我是否把“0”作为宽度,它仍然会

我刚开始接触编程,还不能解释我从Python.org上得到的关于这个问题的答案,而且看起来以前没有人问过这个问题

我正试图找出两者之间的区别

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

根据我正在学习的书(《Python编程:计算机科学导论》,John Zelle):“可以使用0宽度表示”根据需要使用尽可能多的空间。“没有意义的是,它已经在使用所需的空间。如果我把100000.42放在变量中,不管我是否把“0”作为宽度,它仍然会以正确的空间量打印它

输出是相同的

所以在我看来,“0”是默认的宽度集,但是我看了Python.org上的文档,他们说了同样的话,但是用了一些我不理解的高度技术性的词

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

我一点也不理解,但我确实理解下一行,它听起来和我认为的“0”一样:

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

那么有什么区别,有人能解释吗


我使用的是Python2.7,请注意,现在这两种方法都不正确。现在我们使用,但存在类似的格式

基本上,使用
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
在旧式中,这将是:

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

0
格式字符后面必须跟有要实现的
宽度

>>> "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'

也许用不同的数字来表示不同?嘿,亚当,非常感谢!我看到在指定宽度前添加0如何使其“零填充”输出。那么“0”本身就没什么作用了?(就像我想的那样?)我在研究古老的弦乐插值。在Python3+中被替换了吗?你对最近的东西有什么好的建议吗?我进入编程行业是为了一个长期的职业,我能学到什么就学到什么。@affinities23没问题!如果我的答案有帮助,请考虑把它标记为。我无法告诉您
str.format
何时开始使用
%
iTerporation标记,但我相信您可以浏览文档并找到它。就这方面的文献而言,我实际上不是一个很好的来源,因为我所学到的关于编码的所有知识都是通过在文档页面上跋涉和在谷歌上搜索教程来完成的。不幸的是,堆栈溢出也不能真正帮助您(“查找非现场资源”是一个很接近的原因!)@affinities23
0
本身没有任何作用,因为如果旁边没有width字段,您将字段的MINWIDTH设置为零。当然,任何字符串都会达到或超过该最小宽度,因此您永远不会看到任何更改。您要查找的
0
标志只能以定义的字段宽度存在,并且只能填充空间。使用
str.format
您实际上可以用任何字符填充(尝试
print(“{:=^70}”)
)而不仅仅是零。@AdamSmith Cool,我接受了您的答案。这是我在堆栈溢出问题上问的第一个问题,所以我甚至不知道如何接受答案!我试过你的代码打印(“{:=^70}”)。格式(“标题”)很酷。感谢您的热烈欢迎。:-)
>>> "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'