python str.format()方法的基本用法

http://python.usyiyi.cn/python_278/library/stdtypes.html#str.format

str.format()方法的基本用法如下所示:

>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"

花括号及其中的字符(称为格式字段)将被替换为传递给str.format()方法的对象。括号中的数字指传递给str.format()方法的对象的位置。

>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam

如果str.format()方法使用关键字参数,那么将通过参数名引用它们的值。

>>> print 'This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible')
This spam is absolutely horrible.

位置参数和关键字参数可以随意组合:

>>> print 'The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
...                                                    other='Georg')
The story of Bill, Manfred, and Georg.

‘!s’(适用str())和’!r’(适用repr())可以用于值被格式化之前对值进行转换。


>>> import math
>>> print 'The value of PI is approximately {}.'.format(math.pi)
The value of PI is approximately 3.14159265359.
>>> print 'The value of PI is approximately {!r}.'.format(math.pi)
The value of PI is approximately 3.141592653589793.

字段名后允许可选的’:’和格式指令。这允许更好地控制如何设置值的格式。下面的例子将 Pi 转为三位精度。


>>> import math
>>> print 'The value of PI is approximately {0:.3f}.'.format(math.pi)
The value of PI is approximately 3.142.

‘:’后面紧跟一个整数可以限定该字段的最小宽度。这在美化表格时很有用。

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
>>> for name, phone in table.items():
...     print '{0:10} ==> {1:10d}'.format(name, phone)
...
Jack       ==>       4098
Dcab       ==>       7678
Sjoerd     ==>       4127

如果你有一个实在是很长的格式字符串但又不想分开写,要是可以按照名字而不是位置引用变量就好了。有个简单的方法,可以传入一个字典,然后使用’[]’访问。

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print ('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
...        'Dcab: {0[Dcab]:d}'.format(table))
Jack: 4098; Sjoerd: 4127; Dcab: 8637678

这也可以用‘**’符号将这个字典以关键字参数的方式传入。

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print 'Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table)
Jack: 4098; Sjoerd: 4127; Dcab: 8637678

这种方式与内置函数vars()组合起来将更加有用,该函数返回一个包含所有局部变量的字典。

你可能感兴趣的:(Python)