字符串格式化有两种方式:百分号方式、format方式。
其中,百分号方式比较老,而format方式是比较先进的,企图替代古老的方式,目前两者共存。
1、百分号方式
格式:%[(name)][flags][width].[precision]typecode
(name) 可选,用于选择指定的key
flags 可选,可供选择的值有:
width 可选,占有宽度
precision 可选,小数点后保留的位数
typecode 必选
例子:
>>> s = 'hello, %s!' % 'python'
>>> s
'hello, python!'
>>> s = 'hello, %s, %d!' % ('python', 2018)
>>> s
'hello, python, 2018!'
>>> s = 'hello, %(name)s, %(year)d!' % {'name': 'python', 'year': 2018}
>>> s
'hello, python, 2018!'
>>> s = 'hello, %(name)+10s, %(year)-10d!' % {'name': 'python', 'year': 2018}
>>> s
'hello, python, 2018 !'
>>> s = 'hello, %(name)s, %(year).3f!' % {'name': 'python', 'year': 2018}
>>> s
'hello, python, 2018.000!'
%r 与 %s 区别:
%r 用来做 debug 比较好,因为它会显示变量的原始数据(raw data),而其它的符号则是用来向用户显示输出的。
>>> a = 'sunday'
>>> print("Today is %s" % a)
Today is sunday
>>> print("Today is %r" % a)
Today is 'sunday' # 格式化部分用单引号输出
>>> from datetime import datetime
>>> d = datetime.now()
>>> print('%s' % d)
2018-09-10 08:52:00.769949
>>> print('%r' % d)
datetime.datetime(2018, 9, 10, 8, 52, 0, 769949) # 可以看见与上面输出存在明显的区别
2、format方式
>>> s = 'hello, {}, {}'.format('python', 2018)
>>> s
'hello, python, 2018'
>>> s = 'hello, {0}, {1}, hi, {0}'.format('python', 2018)
>>> s
'hello, python, 2018, hi, python'
>>> s = 'hello, {name}, {year}, hi, {name}'.format(name='python', year=2018)
>>> s
'hello, python, 2018, hi, python'
>>> s = 'hello, {:s}, {:d}, hi, {:f}'.format('python', 2018, 9.7)
>>> s
'hello, python, 2018, hi, 9.700000'
使用百分号和format为浮点数保留指定位数的小数,参考:Python保留指定位数的小数
原文链接:Python 字符串格式化输出方式