Python学习-day19-第三章:使用字符串

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)

在这里插入图片描述

    对于各种十进制数,它要求必须包含小数点(对于类型g,它保留小数点后面的零)。
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基础教程》(第三版)人民邮电出版社。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值