Python学习-day19-字符串基本操作(中)
3.3.3、宽度、精度和千位分隔符
设置浮点数格式时,默认小数点后显示6位小数,并根据需要设置字段宽度,而不进行任何形式的填充。有时这种默认不是你想要的,在这种情况下可以指定宽度和精度。
宽度是使用整数设置的。如:
str17 = "{num:10}".format(num=3)
print(str17)
str18 = "{name:10}".format(name="Bob")
print(str18)
如所见,数字和字符串的对齐方式不一样,对齐将在下一节介绍。
精度也是可以使用整数指定的,但需要在前面加上一个小数点,如:
str19 = "{pi:10.2f}".format(pi=pi)
print(str19)
实际上,对其他类型也可以指定精度,但不常见。如:
str20 = "{:.5}".format("Guido van Rossum")
print(str20)
最后,可使用逗号来指出千位分隔符,如:
str21 = "One googol is {:,}".format(10**100)
print(str21)
同时指定其他格式设置元素时,这个逗号应放在宽度和表示精度的句点之间。
3.3.4、符号、对齐和用0填充
有很多用于设置数字格式的机制,比如便于打印整齐的表格。在大多数情况下,只需指定宽度和精度。担包含负数后,原本漂亮的输出可能不在漂亮。另外,字符串和数的默认对齐方式不同。在一栏中同时包含字符串和数时,你可能想到修改默认对齐方式。在指定宽度和精度的数前面,可添加一个标志。这个标志可以是零、加号、减号或空格,其中零表示使用数字0来填充数字。
str22 = '{:010.2f}'.format(pi)
print(str22)
要指定左对齐、右对齐和居中,可分别使用<、> 和 ^。
str23 = '{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(pi)
print(str23)
可以使用填充字符来扩充对齐说明符,即可指定特殊字符代替默认的空格。
str24 = '{0:$<10.2f}\n{0:$^10.2f}\n{0:$>10.2f}'.format(pi)
print(str24)
还有更具体的说明符=,它指定将填充字符放在符号和数字之间。
str25 = '{0:10.2f}\n{1:10.2f}'.format(pi,-pi)
print(str25)
str26 = '{0:10.2f}\n{1:=10.2f}'.format(pi,-pi)
print(str26)
如果要给正数加上符号。可使用说明符“+”(将其放在对齐说明符的后面),而不是默认的“-”。如果将符号说明符指定为空格,会在正数前面加上空格而不是“+”。
str27 = '{0:.2}\n{1:.2}'.format(pi,-pi)
print(str27)
str28 = '{0:+.2}\n{1:+.2}'.format(pi,-pi)
print(str28)
str29 = '{0: .2}\n{1: .2}'.format(pi,-pi)
print(str29)
另外,一个要素“#”,可将其放在说明符和宽度之间(如果指定了这两种设置)。这个设置将触发另一种转换方式,转换细节随类型而异。例如,对于二进制、八进制和十六进制转换将加上一个前缀。
str30 = "{:b}".format(42)
print(str30)
str31 = "{:#b}".format(42)
print(str31)
str32 = "{:g}".format(42)
print(str32)
str33 = "{:#g}".format(42)
print(str33)
代码清单3-1
# 需求:根据指定的宽度打印格式良好的价格列表。
print('------------下面是代码清单--------------')
width = int(input('Please enter width: '))
price_width = 10
item_width = width - price_width
header_fmt = '{{:{}}}{{:>{}}}'.format(item_width,price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width,price_width)
print('='*width)
print(header_fmt.format('Item','Price'))
print('-'*width)
print(fmt.format('Apples',0.4))
print(fmt.format('Pears',0.5))
print(fmt.format('Cantaloupes',1.92))
print(fmt.format('Dried Apricots (16 oz.)',8))
print(fmt.format('Prunes (4 lbs.)',12))
print('=' * width)
博文内容来自本人所选的学习Python的工具书-《Python基础教程》(第三版)人民邮电出版社。