基于字典的格式化表达式 | 第二部分 类型与操作 —— 第 7 章: 字符串基础 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-江南app体育官方入口

未匹配的标注

作为一个更高级的扩展,字符串格式还允许在左边的转换目标去查看编码在右边的字典的键,然后获取对应的值。这打开了使用格式化作为一种模板工具的大门。到目前为止只在第4章中简要地学习了字典,但下面是一个展示基础知识的例子:

>>> '%(qty)d more %(food)s' % {'qty': 1, 'food': 'spam'}
'1 more spam'

在这里,在左边格式字符串中的(qty)(food) 去查看右边字典字面量中的键并获取它们相对应的值。产生文本如html或xml的程序通常使用这个技术——可以构建一个值的字典,然后用一个使用基于键引用的格式化表达式一次性替换它们(注意第一个注释是在三引号上,所以它没有被添加到字符串中,并且我在idle中键入这个,没有持续行的"..."提示符):

>>> # 带替换目标的模板
>>> reply = """
greetings...
hello %(name)s!
your age is %(age)s
"""
>>> values = {'name': 'bob', 'age': 40} # 构建值来替换
>>> print(reply % values) # 执行替换
greetings...
hello bob!
your age is 40

这个技巧还和 vars内置函数(它返回一个字典,该字典包含了自己被调用所在的地方存在的所有变量)一起使用:

>>> food = 'spam'
>>> qty = 10
>>> vars()
{'food': 'spam', 'qty': 10, ...plus built-in names set by python... }

vars被使用在格式化操作的右边时,这个技巧允许格式字符串通过名称去引用变量——就像字典键一样:

>>> '%(qty)d more %(food)s' % vars() # 变量是 vars() 中的键
'10 more spam'

第8章将更深入研究字典。还请参阅第5章中使用%x%o格式化表达式目标码转换为16进制和8进制字符串的例子,这里不再重复。额外的格式化表达式例子也即将出现,作为和格式化方法(本章的下一个和最后的字符串主题)的对比。

本文章首发在 江南app体育官方入口 网站上。

上一篇 下一篇
讨论数量: 0



暂无话题~
网站地图