字符串格式化方法调用——添加键、属性和偏移量

未匹配的标注

% 格式化表达式一样,format 调用可以变得更复杂来支持更高级的用法。比如,format 字符串可以命名对象属性和字典键——和在普通Python语法中一样,方括号命名字典键,点代表对象属性,键和对象所属的对象被位置或关键字引用。下面第一个例子以键“kind”索引了一个字典,然后获取了已导入sys模块对象的属性“platform”。第二个是一样的,但是用关键字命名对象而非位置:

>>> import sys
>>> 'My {1[kind]} runs {0.platform}'.format(sys, {'kind': 'laptop'})
'My laptop runs win32'
>>> 'My {map[kind]} runs {sys.platform}'.format(sys=sys, map={'kind':'laptop'})
'My laptop runs win32'

在format 字符串中的方括号也可以命名列表(和其它序列的)偏移量来执行索引操作,但在format字符串中只有正偏移量才在语法上有效,所以这个特性不如想象的那么通用。和%表达式一样,要命名负偏移量或切片,或通常使用任意的表达式结果,必须在format字符串外面运行表达式(注意这里使用 *parts 来将元组中的项解压缩为一个个单独的函数参数,和在第5章中学习分数时是一样的;关于这个形式的更多知识请参阅第18章):

>>> somelist = list('SPAM')
>>> somelist
['S', 'P', 'A', 'M']
>>> 'first={0[0]}, third={0[2]}'.format(somelist)
'first=S, third=A'

>>> 'first={0[0]}, last={0[-1]}'.format(somelist) # [-1] 在 format 字符串中会失败
TypeError: list indices must be integers or slices, not str

>>> 'first={0}, last={1}'.format(somelist[0], somelist[-1]) 
'first=S, last=M'

>>> 'first={0[0]}, last={0[1]}, middle={0[1:3]}'.format(somelist) # [1:3] 在 format 字符串中会失败
TypeError: list indices must be integers or slices, not str

>>> parts = somelist[0], somelist[-1], somelist[1:3] 
>>> 'first={0}, last={1}, middle={2}'.format(*parts) 
"first=S, last=M, middle=['P', 'A']"

# 或者在 2.7/3.1+ 中可以使用 '{}' 
>>> 'first={}, last={}, middle={}'.format(*parts)
"first=S, last=M, middle=['P', 'A']"

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~