%_格式化字符串_python_有趣的模块_5

python %

用法: <format_string> % <values>
参数:
formating_string: %[<flags>][<width>][.<precision>]<type>

参数meaning
%说明转义符
<flags>更加详细的控制
<width>字符的宽度
.<precision>浮点数精度 字符串长度
<type>字符类型

type

<type>Conversion Type
d, i, u整数
x, X16进制
o八进制
f, F浮点
e, E指数
g, G指数或浮点,根据长度定
c字符char
s, r, a字符串
%%
  1. d i u 等价
>>> '%d, %i, %u' % (42, 42, 42)
'42, 42, 42'

>>> '%d, %i, %u' % (-42, -42, -42)
'-42, -42, -42'
  1. x 小写16进制, X 大写16 进制, o, O 八进制
>>> '%x, %X' % (252, 252)
'fc, FC'
>>> '%o' % 16
'20'
  1. 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'
  1. g G 用来自适应更合适的表示方式(浮点或者指数)
>>> '%g' % 3.14
'3.14'

>>> '%g' % 0.00000003
'3e-08'
>>> '%G' % 0.00000003
'3E-08'
  1. c 字符
>>> '%c' % 97
'a'

>>> '[%c]' % 'y'
'[y]

>>> '%c' % 8721
'∑'
  1. s, r, a 使用str(), repr(), ascii()格式化字符
>>> '%s' % '北山'
'北山'
>>> '%r' % '北山'
"'北山'"
>>> '%a' % 'foo北山'
"'foo\\u5317\\u5c71'"
  1. % 它不占<values>的值
>>> 'Get %d%% off on %s today only!' % (30, 'bananas')
'Get 30% off on bananas today only!'

width 和 precision

  1. width 控制宽度, 如果width 大于字符串长度,会右对齐,左侧补空格, 如果width小于实际宽度, 那么width失效
>>> '%5s' % 'foo'
'  foo'

>>> '%3d' % 4
'  4'

>>> '%2d' % 1234, '%d' % 1234
('1234', '1234')
>>> '%2s' % 'foobar', '%s' % 'foobar'
('foobar', 'foobar')
  1. f F e E .precision保留小数点后precision位
>>> '%.2f' % 123.456789
'123.46'

>>> '%.2e' % 123.456789
'1.23e+02'
  1. g G 保留precision位有效数字
>>> '%.2g' % 123.456789
'1.2e+02'
  1. s r a 会截断字符大与precision的长度
>>> '%.4s' % 'foobar'
'foob'
  1. width 和 precision 经常会一起使用
>>> '%8.2f' % 123.45678
'  123.46'

>>> '%8.3s' % 'foobar'
'     foo'
  1. width 和precision是可以动态指定的
>>> " %*.*f" % (8, 2, 123.45678)
'   123.46'

flags

CharacterControls
#显示进制法则或小数点
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'
  1. 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

reference

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值