Python字符串格式:%vs.format
python中的字符串格式化程序通常被称为旧样式和新样式。旧式的是“%”和.format被称为新的风格。
简单的位置格式是最常见的用例。如果参数的顺序不太可能更改并且要连接的元素很少,则使用这种格式。
示例
#使用%的字符串连接 print('%s %s'%('one','two')) #使用.format的字符串连接 print('{} {}'.format('one','two'))
输出结果
one two one two
使用新的样式格式,可以为占位符提供显式的位置索引。这样可以在不更改参数的情况下重新排列显示顺序。此功能在旧样式中不可用。
示例
print('{0} {1}'.format('one','two')) print('{1} {0}'.format('one','two'))
输出结果
one two two one
填充和对齐字符串
默认情况下,将值格式化为仅占用表示内容所需的尽可能多的字符。但是,可以定义将值填充为特定长度。
示例
print('%10s'%('test')) print('{:>10}'.format('test'))
输出结果
test test
截断长弦
也可以将过长的值截断为特定数目的字符。后面的数字。格式中的(点)指定输出的精度。对于字符串,这意味着输出将被截断为指定的长度。在我们的示例中,这将是3个字符。
示例
print('%.3s'%('nhooo',)) print('{:.3}'.format('nhooo'))
输出结果
inc inc
号码
示例
print('%d' %(10000)) print('{:d}' .format(10000))
输出结果
10000 10000
参数化格式
新样式格式允许使用参数化动态指定格式的所有组件。参数化格式是括号中的嵌套表达式,可以在冒号之后的父格式中的任何位置出现。旧样式的格式也支持某些参数化,但局限性更大。即,它仅允许对输出的宽度和精度进行参数化。
示例
from datetime import datetime dt = datetime(2019, 12, 19, 4, 5) print('{:{dfmt} {tfmt}}'.format(dt, dfmt='%Y-%m-%d', tfmt='%H:%M'))
输出结果
2019-12-19 04:05
自定义对象
datetime示例通过使用__format__()magic方法起作用。但是,通过覆盖此方法,可以在自己的对象中定义自定义格式处理。这样可以完全控制所使用的格式语法。
示例
class Type2000(object): def __format__(self, format): if (format == 'test-format'): return "This is format example for include help." return 'Type 2000' print('{:test-format}'.format(Type2000()))
输出结果
This is format example for include help.