Python 基于 dictionary 的字符串格式化
2013-02-21 00:00
113 查看
基于 dictionary 的字符串格式化
(搬一段, Dive into python, 标记一下)为什么学习locals和globals? 因为接下来就可以学习关于基于 dictionary 的字符串格式化。或许您还能记起, 字符串格式化 提供了一种将值插入字符串中的一种便捷的方法。值被列在一个 tuple 中, 按照顺序插入到字符串中每个格式化标记所在的位置上。尽管这种做法效率高,但还不是最容易阅读的代码,特别是当插入多个值的时候。仅用眼看一遍字符串,您不能马上就明白结果是什么;您需要经常地在字符串和值的 tuple 之间进行反复查看。
有另外一种字符串格式化的形式,它使用 dictionary 而不是值的 tuple。
例 8.13. 基于 dictionary 的字符串格式化介绍
>>>params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"} >>>"%(pwd)s" % params 'secret' >>>"%(pwd)s is not a good password for %(uid)s" % params 'secret is not a good password for sa' >>>"%(database)s of mind, %(database)s of body" % params 'master of mind, master of body'
locals 一样的有意义的键字和值的 dictionary 的时候
基于 dictionary 的字符串格式化的更多内容
def unknown_starttag(self, tag, attrs): strattrs = "".join([' %s="%s"' % (key, value) for key, value in attrs]) self.pieces.append("<%(tag)s%(strattrs)s>" % locals())
当这个模块被调用时,attrs是一个键/值 tuple 的 list,就象一个 dictionary 的items。这就意味着我们可以使用 多变量赋值 来遍历它。到现在这将是一种熟悉的模式,但是这里有很多东西,让我们分开来看: 假设attrs是[('href', 'index.html'), ('title', 'Go to home page')]。 在这个列表理解的第一轮循环中,key将为'href',value将为'index.html'。 字符串格式化' %s="%s"' % (key, value)将生成' href="index.html"'。这个字符串就作为这个列表理解返回值的第一个元素。 在第二轮中,key将为'title',value将为'Go to home page'。 字符串格式化将生成' title="Go to home page"'。 这个 list 理解返回两个生成的字符串 list,并且strattrs将把这个 list 的两个元素连接在一起形成' href="index.html" title="Go to home page"'。 | |
现在,使用基于 dictionary 的字符串格式化,我们将tag和strattrs的值插入到一个字符串中。所以,如果tag是'a',最终的结果会是'<a href="index.html" title="Go to home page">',并且这就是追加到self.pieces后面的东西。 |
使用locals来应用基于 dictionary 的字符串格式化是一种方便的作法,它可以使复杂的字符串格式化表达式更易读。但它需要花费一定的代价。在调用locals方面有一点性能上的问题,这是由于 locals创建了局部名字空间的一个拷贝 引起的。 |
相关文章推荐
- 基于Dictionary的字符串格式化
- python笔记4 - 索引,切片,字符编码转换函数,字符串的属性方法,字符串格式化表达式,占位符,基于字典的字符串格式化,循环语句
- Python 字符串格式化 format
- 7. python 字符串格式化方法(1)
- Python 字符串格式化
- Python3之while、字符串格式化,及字符串内置函数
- Python 学习笔记 - 字符串的格式化
- Python补充05 字符串格式化 (%操作符)
- [Dynamic Language] Python 日期时间格式化字符串
- Python 字符串的格式化两种方式
- Python中应该使用%还是format来格式化字符串
- Python 以指定列宽格式化字符串
- 【python】format函数格式化字符串的用法
- python中字符串格式化
- python之字符串格式化(format)
- Python 字符串格式化
- Python中字符串格式化:%和format
- python格式化字符串
- 小甲鱼Python教程第15讲--python字符串格式化笔记及习题答案
- Python datetime 格式化字符串:strftime()