上QQ阅读APP看书,第一时间看更新
1.2 数字格式化输出
在项目应用中,我们有时需要将数字格式化后输出,并希望能对数字的位数、对齐、千分符等进行控制。
格式化输出单个数字可以直接使用f前缀,示例(number_format.py)如下:
x = 1234.56789 print(f'0.2f format {x}: {x:0.2f}') print(f'>10.1f format {x}: {x: >10.1f}') print(f'<10.1f format {x}: {x: <10.1f}') print(f'^10.1f format {x}: {x: ^10.1f}') print(f', format {x}: {x: ,}') print(f'0,.1f format {x}: {x: 0,.1f}')
执行py文件,输出结果如下:
0.2f format 1234.56789: 1234.57 >10.1f format 1234.56789: 1234.6 <10.1f format 1234.56789: 1234.6 ^10.1f format 1234.56789: 1234.6 , format 1234.56789: 1,234.56789 0,.1f format 1234.56789: 1,234.6
如果想使用指数记法,可将前缀f改成e或者E(取决于指数输出的大小写形式),示例(number_format.py)如下:
print(f'e format {x} is: {x: e}') print(f'0.2E format {x} is: {x: 0.2E}')
执行py文件,输出结果如下:
e format 1234.56789 is: 1.234568e+03 0.2E format 1234.56789 is: 1.23E+03
指定宽度和精度的一般形式是'[<>^]?width[,]?(.digits)?',其中width和digits为整数,?代表可选部分。同样的格式可被用在字符串的format()方法中,输出(number_format.py)如下:
print(f'The value is {x: 0,.2f}')
数字格式化输出通常是比较简单的。该技术同时适用于浮点数和decimal模块中的Decimal数字对象。
当指定数字的位数后,利用round()函数对结果值进行四舍五入后再返回。示例(number_format.py)如下:
print(f'x format: {x: 0.1f}') print(f'-x format: {-x: 0.1f}')
执行py文件,输出结果如下:
x format: 1234.6 -x format: -1234.6
包含千分符的格式化与本地化没有关系。如果需要根据地区来显示千分符,则需要自己去调用locale模块中的函数。我们可以使用translate()方法来交换千分符,示例(number_format.py)如下:
swap_separators = { ord('.'):',', ord(','):'.' } print(format(x, ',').translate(swap_separators))
执行py文件,输出结果如下:
1.234,56789