python %
用法: <format_string> % <values>
参数:
formating_string
: %[<flags>][<width>][.<precision>]<type>
参数 | meaning |
---|---|
% | 说明转义符 |
<flags> | 更加详细的控制 |
<width> | 字符的宽度 |
.<precision> | 浮点数精度 字符串长度 |
<type> | 字符类型 |
type
<type> | Conversion Type |
---|---|
d, i, u | 整数 |
x, X | 16进制 |
o | 八进制 |
f, F | 浮点 |
e, E | 指数 |
g, G | 指数或浮点,根据长度定 |
c | 字符char |
s, r, a | 字符串 |
% | % |
- d i u 等价
>>> '%d, %i, %u' % (42, 42, 42)
'42, 42, 42'
>>> '%d, %i, %u' % (-42, -42, -42)
'-42, -42, -42'
- x 小写16进制, X 大写16 进制, o, O 八进制
>>> '%x, %X' % (252, 252)
'fc, FC'
>>> '%o' % 16
'20'
- e f E f
>>> '%f, %F' % (3.14159, 3.14)
'3.141590, 3.140000'
>>> '%e, %E' % (1000.0, 1000.0)
'1.000000e+03, 1.000000E+03'
- g G 用来自适应更合适的表示方式(浮点或者指数)
>>> '%g' % 3.14
'3.14'
>>> '%g' % 0.00000003
'3e-08'
>>> '%G' % 0.00000003
'3E-08'
- c 字符
>>> '%c' % 97
'a'
>>> '[%c]' % 'y'
'[y]
>>> '%c' % 8721
'∑'
- s, r, a 使用str(), repr(), ascii()格式化字符
>>> '%s' % '北山'
'北山'
>>> '%r' % '北山'
"'北山'"
>>> '%a' % 'foo北山'
"'foo\\u5317\\u5c71'"
- % 它不占<values>的值
>>> 'Get %d%% off on %s today only!' % (30, 'bananas')
'Get 30% off on bananas today only!'
width 和 precision
- width 控制宽度, 如果width 大于字符串长度,会右对齐,左侧补空格, 如果width小于实际宽度, 那么width失效
>>> '%5s' % 'foo'
' foo'
>>> '%3d' % 4
' 4'
>>> '%2d' % 1234, '%d' % 1234
('1234', '1234')
>>> '%2s' % 'foobar', '%s' % 'foobar'
('foobar', 'foobar')
- f F e E
.precision
保留小数点后precision位
>>> '%.2f' % 123.456789
'123.46'
>>> '%.2e' % 123.456789
'1.23e+02'
- g G 保留precision位有效数字
>>> '%.2g' % 123.456789
'1.2e+02'
- s r a 会截断字符大与precision的长度
>>> '%.4s' % 'foobar'
'foob'
- width 和 precision 经常会一起使用
>>> '%8.2f' % 123.45678
' 123.46'
>>> '%8.3s' % 'foobar'
' foo'
- width 和precision是可以动态指定的
>>> " %*.*f" % (8, 2, 123.45678)
' 123.46'
flags
Character | Controls |
---|---|
# | 显示进制法则或小数点 |
0 | 左侧补0 |
- | 左对齐 |
+ ’ ’ (space) | 对整数则加+或空格(ex: +5, +6) |
>>> '%#o' % 16
'0o20'
>>> '%#x' % 16, '%#X' % 16
('0x10', '0X10')
>>> '%.0f' % 123
'123'
>>> '%#.0f' % 123
'123.'
>>> '%.0e' % 123
'1e+02'
>>> '%#.0e' % 123
'1.e+02'
- 0
>>> '%05d' % 123
'00123'
>>> '%08.2f' % 1.2
'00001.20'
>>> '%-5d' % 123
'123 '
>>> '%-8.2f' % 123.3
'123.30 '
>>> '%-*s' % (10, 'foo')
'foo
如果0 和- 一起使用, 那么0 无效
4. + " "
>>> '%+d' % 3
'+3'
>>> '%+5d' % 3
' +3'
>>> '% d' % 3
' 3'
使用字典格式,就可以有任何顺序了
>>> d = {'quantity': 6, 'item': 'bananas', 'price': 1.74}
>>> '%(quantity)d %(item)s cost $%(price).2f' % d
'6 bananas cost $1.74'
>>> 'It will cost you $%(price).2f for %(item)s, if you buy %(quantity)d' % d
'It will cost you $1.74 for bananas, if you buy 6'
>>> 'Quantity: %(quantity)03d' % d
'Quantity: 006'
>>> 'Item: %(item).5s' % d
'Item: banan'
注意:
如果使用字段格式, 那么就不能使用*
自定义width 和 precision