字符串格式化表达式——高级格式化表达式实例

未匹配的标注

格式化目标语法在Python标准手册和参考书中有完整的文档,但为了展示日常用法,让我们看一些例子。这个例子先默认格式化整数,然后在6字符宽的字段中左对齐,然后填充0:

>>> x = 1234
>>> res = 'integers: ...%d...%−6d...%06d' % (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'

否则使用小数格式fg带有默认的总数字精度为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 | %05.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'

如果对这个特性感兴趣,使用一些这些例子来实验并亲自操作来获得更多深刻见解。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~