格式化(Formatting)

print style
老式的类似C语言风格的格式化输出

用 "%" 来作为占位符

>>> 'i am %s' % ('jiangds')    # 可以采用元组的方式
'i am jiangds'
>>> 'i am %(name)s' % {'name':'jiangds'}    # 可以采用字典的方式
'i am jiangds'
>>> 'i am %s, my name is %s' % ('jcds', 'cm')    # 多次出现采用元组的方式
'i am jcds, my name is cm'
>>> 'i am %(name)s, my name is %(name)s' % {'name':'jiangds'}    # 多次出现采用字典的方式
'i am jiangds, my name is jiangds'
>>> 'i am %(name)s, my name is %(name_2)s' % {'name':'jiangds', 'name_2':'cm'}
'i am jiangds, my name is cm'
>>> name = 'jiangds'
>>> 'i am %s' % name    # 只有一个元素可以直接跟在百分号后面,这里解释其自动做了一个封包,把name封包为元组(语法糖)
'i am jiangds'

字符串中占位符type

部分常用的如下:
|Type |意义 |
---|:--|---
|d、i、u |十进制整数
|d、i、u |十进制整数
|x、X |十六进制整数(x为对应数字里的字母为小写,X为大写)
|e、E |科学计数法(e为对应科学计数里的小写e,E为大写E)
|f、F |浮点数(默认保留6位小数)
|g、G |自动选择最优表示法(整数、浮点数或科学计数法)
|c |单个字符或整数转化为字符
|s |用str()转化的字符串
|r |用repr()转化的字符串
|a |用ascii()转化为字符串
其中的str()和repr()调用的是_str_和_repr_的魔术方法

  • 示例
>>> 'the num is %d' % 1211
'the num is 1211'
>>> 'the num is %i' % 1211
'the num is 1211'
>>> 'the num is %u' % 1211
'the num is 1211'
>>> 'the num is %o' % 1211
'the num is 2273'
>>> 'the num is %x' % 1211
'the num is 4bb'
>>> 'the num is %X' % 1211
'the num is 4BB'
>>> 'the num is %e' % 1211
'the num is 1.211000e+03'
>>> 'the num is %E' % 1211
'the num is 1.211000E+03'
>>> 'the num is %f' % 0.123456789
'the num is 0.123457'
>>> 'the num is %F' % 0.123456789
'the num is 0.123457'
>>> 'the num is %g' % 0.123456789
'the num is 0.123457'
>>> 'the num is %g' % 0.00000123456789
'the num is 1.23457e-06'
>>> 'the num is %G' % 0.00000123456789
'the num is 1.23457E-06'
>>> 'the num is %s' % 'jiangds'
'the num is jiangds'
>>> 'the num is %r' % 'jiangds'
"the num is 'jiangds'"
>>> 'the num is %a' % '东升'
"the num is '\\u4e1c\\u5347'"
  • 数字的位数和对齐
    -:左对齐
    +:右对齐
    0:填充0
>>> '%0.3f' % 0.123456789    # 小数位保留3位
'0.123'
>>> '%10.3f' % 0.123456789    # 总位数为10位,小数位保留3位,不够空格填充
'     0.123'
>>> '%-10.3f' % 0.123456789    # 总位数10位,"-"左对齐,右边填充空格
'0.123     '
>>> '%+10.3f' % 0.123456789    
'    +0.123'
>>> '%+10.3f' % -0.123456789
'    -0.123'
>>> '%010.3f' % 0.123456789    # 前面加0填充
'000000.123'

format


python3推荐format格式的格式化输出,功能更强大

字符串中的占位符用 {} 或者带索引的 {Index} , 或者更详细的格式(索引后面加冒号),如{0:10.3f}等。

format括号里可以跟位置参数,也可以跟关键字参数。

  • 示例
>>> 'i am {}'.format('jds')
'i am jds'
>>> 'i am {}, my age is {}'.format('jds', '18')
'i am jds, my age is 18'
>>> 'i am {1}, my age is {0}'.format('18', 'jds')
'i am jds, my age is 18'
>>> 'i am {name}, my age is {age}'.format(name='jds', age=18)
'i am jds, my age is 18'
>>> 'i am {name}, my name is {name}'.format(name='jds')
'i am jds, my name is jds'
>>> 'i am {0}, my name is {0}'.format('jds')
'i am jds, my name is jds'
posted @ 2021-01-17 17:13  一墨无辰  阅读(658)  评论(0)    收藏  举报