您的位置:首页 > 编程语言 > Python开发

Python笔记-文本字符串格式化

2017-04-14 22:15 573 查看

文本字符串格式化

Python 有两种格式化字符串的方式,旧式和新式。

1、使用%的旧式格式化

>>> '%s' % 42
'42'

>>> '%d' % 42
'42'

>>> '%f' % 7.03
'7.030000'

>>> '%e' % 7.03
'7.030000e+00'

>>> '%d%%' % 100
'100%'

>>> actor = 'Richard Gere'
>>> "My wife's favorite actor is %s" % actor
"My wife's favorite actor is Richard Gere"

>>> cat = 'Chester'
>>> weight = 28
>>> "Our cat %s weighs %s pounds" % (cat, weight)
'Our cat Chester weighs 28 pounds'


字符串中出现 % 的次数需要与 % 之后所提供的数据项个数相同。

如果只需插入一个数据,例如前面的 actor, 直接将需要插入的数据置于% 后即可。

如果需要插入多个数据,则需要将它们封装进一个元组,例如上例中的 (cat, weight)。

>>> n = 42
>>> f = 7.03
>>> s = 'string cheese'

#设定最小域宽为10个字符,最大字符宽度为4,右对齐
>>> '%10.4d %10.4f %10.4s' % (n, f, s)
'      0042       7.0300       stri'


2、使用{}和format的新式格式化

>>> n = 42
>>> f = 7.03
>>> s = 'string cheese'

>>> '{} {} {}'.format(f, n, s)
'7.03 42 string cheese'

>>> '{2} {0} {1}'.format(f, s, n)
'42 7.03 string cheese'

>>> '{n} {f} {s}'.format(n=42, f=7.03, s='string cheese')
'42 7.03 string cheese'


旧式格式化允许在 % 后指定参数格式,但在新式格式化里,将这些格式标识符放在 : 后

>>> n = 42
>>> f = 7.03
>>> s = 'string cheese'

>>> '{0:d} {1:f} {2:s}'.format(n, f, s)
'42 7.030000 string cheese'

>>> '{n:d} {f:f} {s:s}'.format(n=42, f=7.03, s='string cheese')
'42 7.030000 string cheese'

#最小域宽设为10。   <:右对齐    >:左对齐    ^:居中
>>> '{0:>10d} {1:>10f} {2:>10s}'.format(n, f, s)
' 42 7.030000 string cheese'


3、对于浮点数而言精度仍然代表着小数点后的数字个数, 对于字符串而言精度则代表着最大字符个数,但在新式格式化中你无法对整数设定精度:

>>> '{0:>10.4d} {1:>10.4f} {2:10.4s}'.format(n, f, s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Precision not allowed in integer format specifier

>>> '{0:>10d} {1:>10.4f} {2:>10.4s}'.format(n, f, s)
' 42 7.0300 stri'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息