字符串格式化表达式——高级格式化表达式实例 | 第二部分 类型与操作 —— 第 7 章: 字符串基础 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-380玩彩网官网入口
格式化目标语法在python标准手册和参考书中有完整的文档,但为了展示日常用法,让我们看一些例子。这个例子先默认格式化整数,然后在6字符宽的字段中左对齐,然后填充0:
>>> x = 1234
>>> res = 'integers: ...%d...%−6d...d' % (x, x, x)
>>> res
'integers: ...1234...1234 ...001234'
%e
, %f
, %g
格式以不同方式显示了浮点数,如下面的交互显示的——%e
和%e
想同,但幂为大写,g
通过数字内容来选择格式(正式定义为:如果幂小于 -4 或不小于精度,则使用含有幂的格式e
:
# 如果幂小于 -4
>>> x = 0.0000123456789
>>> '%e | %f | %g' % (x, x, x)
'1.234568e-05 | 0.000012 | 1.23457e-05'
# 如果不小于精度(6位)
>>> x = 1234567
>>> '%e | %f | %g' % (x, x, x)
'1.234567e 06 | 1234567.000000 | 1.23457e 06'
否则使用小数格式f
(g
带有默认的总数字精度为6)):
>>> x = 1.23456789
>>> x # 在 2.7 和 3.1 版本前显示更多数位
1.23456789
>>> '%e | %f | %g' % (x, x, x)
'1.234568e 00 | 1.234568 | 1.23457'
>>> x = 123456
>>> '%e | %f | %g' % (x, x, x)
'1.234560e 05 | 123456.000000 | 123456'
>>> x = 0.000123456789
>>> '%e | %f | %g' % (x, x, x)
'1.234568e-04 | 0.000123 | 0.000123457'
>>> '%e' % x
'1.234568e 00'
对浮点数字,可以通过指定左对齐,0填充,数字符号,总字段宽度和小数点后的数位来达到许多额外的格式化效果。对更简单的任务,可以使用简单的转换为字符串(使用 %s
格式表达式或之前展示的 str
内置函数)来勉强应对:
>>> x = 1.23456789
>>> '%−6.2f | .2f | % 06.1f' % (x, x, x)
'1.23 | 01.23 | 001.2'
>>> '%s' % x, str(x)
('1.23456789', '1.23456789')
当大小直到运行时才知道时,可以使用计算出的宽度和精度(通过在格式字符串中使用 *
来指定,从而强制它们的值从%
操作符右边的输入中的下一项获得——这里元组中的4给出了精度):
>>> '%f, %.2f, %.*f' % (1/3.0, 1/3.0, 4, 1/3.0)
'0.333333, 0.33, 0.3333'
如果对这个特性感兴趣,使用一些这些例子来实验并亲自操作来获得更多深刻见解。