Python Cookbook中文版(第2版)(china-pub首发)
基本信息
- 原书名: Python Cookbook
- 原出版社: O'Reilly Media
- 作者: Alex Martelli Anna Ravenscroft David Ascher
- 译者: 高铁军
- 丛书名: 人民邮电出版社O'Reilly系列
- 出版社:人民邮电出版社
- ISBN:9787115222664
- 上架时间:2010-5-12
- 出版日期:2010 年5月
- 开本:16开
- 页码:756
- 版次:2-1
- 所属分类:
计算机 > 软件与程序设计 > Python
编辑推荐
O'Reilly著名的Cookbook系列之一
Python领域里久负盛名的技术图书
Python社区集体智慧的结晶
第一版好评如潮,Amazon五星推荐
推荐阅读
内容简介回到顶部↑
本书介绍了python应用在各个领域中的一些使用技巧和方法,从最基本的字符、文件序列、字典和排序,到进阶的面向对象编程、数据库和数据持久化、xml处理和web编程,再到比较高级和抽象的描述符、装饰器、元类、迭代器和生成器,均有涉及。书中还介绍了一些第三方包和库的使用,包括twisted、gil、pywin32等。本书覆盖了python应用中的很多常见问题,并提出了通用的解决方案。书中的代码和方法具有很强的实用性,可以方便地应用到实际的项目中,并产生立竿见影的效果。尤为难得的是,本书的各位作者都具有丰富的业界实践经验,因此,本书不仅给出了对各种问题的解决方案,同时还体现了很多专家的思维方式和良好的编程习惯,与具体的细节性知识相比,这部分内容无疑是本书的精华。
本书适合具有一定python基础的读者阅读参考。
本书适合具有一定python基础的读者阅读参考。
目录回到顶部↑
第1章 文本 1
引言 1
1.1 每次处理一个字符 6
1.2 字符和字符值之间的转换 7
1.3 测试一个对象是否是类字符串 8
1.4 字符串对齐 10
1.5 去除字符串两端的空格 11
1.6 合并字符串 11
1.7 将字符串逐字符或逐词反转 14
1.8 检查字符串中是否包含某字符集合中的字符 15
1.9 简化字符串的translate方法的使用 18
1.10 过滤字符串中不属于指定集合的字符 20
1.11 检查一个字符串是文本还是二进制 23
1.12 控制大小写 25
1.13 访问子字符串 26
1.14 改变多行文本字符串的缩进 29
1.15 扩展和压缩制表符 31
1.16 替换字符串中的子串 33
1.17 替换字符串中的子串—python 2.4 34
1.18 一次完成多个替换 36
引言 1
1.1 每次处理一个字符 6
1.2 字符和字符值之间的转换 7
1.3 测试一个对象是否是类字符串 8
1.4 字符串对齐 10
1.5 去除字符串两端的空格 11
1.6 合并字符串 11
1.7 将字符串逐字符或逐词反转 14
1.8 检查字符串中是否包含某字符集合中的字符 15
1.9 简化字符串的translate方法的使用 18
1.10 过滤字符串中不属于指定集合的字符 20
1.11 检查一个字符串是文本还是二进制 23
1.12 控制大小写 25
1.13 访问子字符串 26
1.14 改变多行文本字符串的缩进 29
1.15 扩展和压缩制表符 31
1.16 替换字符串中的子串 33
1.17 替换字符串中的子串—python 2.4 34
1.18 一次完成多个替换 36
译者序回到顶部↑
我认为Python Cookbook是一本很独特的书。很多Python的书籍,其内容都具有一定的相似性和重叠,比如Python的学习书籍和教材,我们会想起Core Python Programming、Python Programming等,说到Python的系统管理,会想起Python for UnIX and Linux System Administration、Pro Python System Administration等书,说起Python的XML处理,会想起XML Processing with Python和Python & XML,而像Python Cookbook这样的书,则是独一无二的,我想不出另外一本和它相似的书。它的独特,体现在几个方面。首先,它不是由一个或几个人写的,而是由几百人贡献的心得和技巧综合而成,所以,它包含了各种思考的方式和看待问题的角度。这些作者中,既有普通的爱好者,也有一些名气极大的技术“牛人”们(如Guido van Rossum、Tim Peters、Raymond Hettinger、Mark Hammond等)。他们都有着极其丰富的工程实践经验,因此,他们给出的技巧心得都非常实用,具有极强的可操作性,读者可以轻易地修改书中的示例并应用于自己的项目。另一方面,这些作者对Python 的理解非常深入,他们不仅仅提出了对问题的解决之道,同时也在字里行间注入了Python的思维方式,即解决问题只是一方面,更重要的是怎么用更Pythonic的方式解决问题,怎么赋予解决过程更多的美感。比起具体的各种问题的解决之法,我认为这才是本书最精华的部分。最后,此书各个部分并没有严密的逻辑联系,所以,看书的方式也可以很随意,读者既可以从头到尾循序渐进地逐章逐节阅读,也可以跳跃式阅读,甚至可以随机抽取章节阅读,一切悉听尊便,只要适合个人习惯即可。
这本书主要是针对Python 2.4,同时也考虑到了对Python 2.3的支持。不过自从此书出版之后,Python的发展也似乎得到了加速,2006年8月,Python 2.5发布,2008年10月,Python 2.6发布,仅仅几个月之后,Python 3.0横空出世,现在最新的版本已经是3.1了。有人可能会担心,现在这本书的内容会不会太陈旧了。我认为其实无须担心,请参考http://www.python.org列出的各个版本的What’ New。从Python 2.4到Python 2.5,一些新的模块被加入了,比如xml.etree、sqlite以及ctypes,还包括了一些新的特性,比如条件表达式的新写法、with语句、统一的try/except/finally等,此外还有几百个补丁以及bug的修正。至于从Python 2.5到Python 2.6的变化,根据A.M. Kuchling的说法,2.6主要是为Python 3.0做铺垫的,Python 2.6在保持对以前代码的兼容性的同时还包含了3.0的新特性和新语法。所以,至少99%的Python 2.4的代码在Python 2.6中仍可以通行无阻。虽然Python 3.0和Python 3.1不再考虑对Python 2.x代码的向后兼容性了,但绝大多数的Python 2.x的代码都可以略作修改继续运行。在3.x中,一些语法或者内建函数和对象的行为略有调整,但核心的机制和特性并未改变,所以此书中的大多数技巧仍然有效。关于Python 2.5、2.6以及3.0和3.1的What’ New,请参看http://docs.python.org/dev/whatsnew/2.5.html、http://docs.python.org/dev/whatsnew/2.6.html、http://docs.python.org/dev/py3k/whatsnew/3.0.html和http://docs.python.org/dev/py3k/ whatsnew/ 3.1.html。
本书显然不是为程序的初学者准备的,甚至不是为有其他编程语言经验的初次接触Python的读者准备的。当然,阅读本书并不要求读者首先成为Python语言的专家,只要有Python编程语言的基础就可以了,如果读者已经拥有了其他语言的编程经验,或者有很多Python编程的经验,那本书就更适用了。
最后,由于本人才疏学浅,虽然竭力想做到译文准确流畅(优美就更不奢望了),但终究力所不逮,不妥和疏漏肯定是难以避免的。因此,我非常欢迎读者的批评指正和宝贵意见。
这本书主要是针对Python 2.4,同时也考虑到了对Python 2.3的支持。不过自从此书出版之后,Python的发展也似乎得到了加速,2006年8月,Python 2.5发布,2008年10月,Python 2.6发布,仅仅几个月之后,Python 3.0横空出世,现在最新的版本已经是3.1了。有人可能会担心,现在这本书的内容会不会太陈旧了。我认为其实无须担心,请参考http://www.python.org列出的各个版本的What’ New。从Python 2.4到Python 2.5,一些新的模块被加入了,比如xml.etree、sqlite以及ctypes,还包括了一些新的特性,比如条件表达式的新写法、with语句、统一的try/except/finally等,此外还有几百个补丁以及bug的修正。至于从Python 2.5到Python 2.6的变化,根据A.M. Kuchling的说法,2.6主要是为Python 3.0做铺垫的,Python 2.6在保持对以前代码的兼容性的同时还包含了3.0的新特性和新语法。所以,至少99%的Python 2.4的代码在Python 2.6中仍可以通行无阻。虽然Python 3.0和Python 3.1不再考虑对Python 2.x代码的向后兼容性了,但绝大多数的Python 2.x的代码都可以略作修改继续运行。在3.x中,一些语法或者内建函数和对象的行为略有调整,但核心的机制和特性并未改变,所以此书中的大多数技巧仍然有效。关于Python 2.5、2.6以及3.0和3.1的What’ New,请参看http://docs.python.org/dev/whatsnew/2.5.html、http://docs.python.org/dev/whatsnew/2.6.html、http://docs.python.org/dev/py3k/whatsnew/3.0.html和http://docs.python.org/dev/py3k/ whatsnew/ 3.1.html。
本书显然不是为程序的初学者准备的,甚至不是为有其他编程语言经验的初次接触Python的读者准备的。当然,阅读本书并不要求读者首先成为Python语言的专家,只要有Python编程语言的基础就可以了,如果读者已经拥有了其他语言的编程经验,或者有很多Python编程的经验,那本书就更适用了。
最后,由于本人才疏学浅,虽然竭力想做到译文准确流畅(优美就更不奢望了),但终究力所不逮,不妥和疏漏肯定是难以避免的。因此,我非常欢迎读者的批评指正和宝贵意见。
前言回到顶部↑
这本书不是一本典型的O’Reilly风格的书,而是一本集合了多个作者的手稿的作品。实际上,这也是一种将开源开发的方式应用到书籍出版业的尝试。Python社区有超过300个成员在本书中贡献了他们的心得和资料。在这里,我们作为编辑,想给你——本书的读者,介绍一些重要的背景资料,这些背景资料是关于此书是如何编著出来,以及这个过程和涉及的人,并提出一些关于这种崭新的风格的思考。
本书的构思
在2000年初,O’Reilly的主编Frank Willison联系到我(David Ascher),问我是否想写一本书。Frank曾是Learning Python一书的编辑,那本书是由我和Mark Lutz合著而成。由于当时我正在致力于Perl shop(ActiveState)一书的编写,实在没有精力再同时开始另一本书的工作。但我和Frank总是定期地通过E-mail或者聊天工具对该书的一些主题进行探讨。Frank有个主意,他受到Tom Chriistiansen和Nathan Torkington编写的Perl Cookbook一书的启发,认为出一本类似的Python Cookbook将会很有趣。Frank想重复Perl Cookbook一书的成功,但他也认为应该让更多的人参与到此书的编写中。他的想法是,作为一本真正的cookbook,更多人的参与将会提供更多的思路、角度和品味。至于书籍的质量,他认为可以通过技术编辑的把关和O’Reilly严格的编辑流程来保障。
Frank和ActiveState的CEO Dick Hardt意识到Frank的目标和ActiveState的目标其实是殊途同归的。ActiveState的想法是为开源程序员创造一个网络社区,叫做ActiveState Programmer’s Network(ASPN)。ActiveState有一个人气很高的网站,提供了很丰富和多样化的内容。ActiveState充分认识到开源社区具有很强大的力量,它能够提供最新和最准确的内容,无论多么生僻的方面均有涉及。
O’Reilly和ActiveState很快认识到他们的目标上的相似性,并且意识到双方合作是最好的达成目标的方式。他们想要实现的包括:
·创建一个由Python程序员提供素材的在线Python Cookbook,为Python程序员服务;
·出版一本包括了最好素材的书,该书由Python社区中的一些关键人物提供的材料和想法综合而成;
·双方通过完成这本书亦可学习到一种不同的著书模式。
与此同时,有两件事情也需提及。首先,ActiveState的一些人,包括Paul Prescod,开始积极地寻找一些星级人物来加入ActiveState的开发小组中。其中一位候选者是著名的Alex Martelli(但那时我们还没听说过他)。Alex出名的原因是他在Python邮件列表中发表过大量透彻全面的文章,同时他也具有极好的耐心来解释Python的各种细微精巧之处,而且他非常高兴通过他自身的努力为Python带来了更多的新用户。我们不知道他的原因是,他住在意大利,而且对于Python社区来说他还算是一个新用户,Python老手们也从来没见过他。但其实在20世纪80年代的时候,Alex居住在美国,为IBM研发中心工作,并且很狂热地使用和推介其他的一些高阶语言(那时,大多是IBM的Rexx)。
ActiveState热切地期望Alex的到来,并试图劝说他搬到温哥华。我们已经是如此接近成功,可惜他的雇主给他带上了个金手铐,而且温哥华的天气明显无法与意大利的宜人气候竞争。所以,最后Alex仍然留在意大利,这让我很失望。即便如此,Alex当时仍然在与O’Reilly接洽和商议写一本书。Alex想写一本cookbook类型的书,但Python Cookbook当时已经签约。所以后来Alex和O’Reilly签了另外一本书Python in Nutshell的合同。
第二件同时进行的事就是创建Python软件基金会。由于各种各样的原因,这件事被当做最好的部分,在某个会议的结束酒会上被提出来,Python社区的成员想要创立一个非盈利性的组织,作为各种各样Python作品的知识产权的拥有者,这样可以确保Python及其衍生的作品有更加坚实的法律支撑。当然,这样的一个组织需要经济上的支持和Python社区的支持才能成功。
在综合考虑当时的各种情况之后,各方达成了以下协议:
·ActiveState将会创建一个在线cookbook,提供一种机制让任何人可以提交技巧(比如,针对某个特定问题的一段Python代码,以及相关的一些探讨,用以阐明为何以及在什么条件下使用这个窍门)。为了激发作者的积极性和读者的互动性,这个网站还允许读者提出修改建议和问题。
·作为我的ActiveState工作的一部分,我将编辑和确保这些材料的质量。Alex Martelli也加入了这个项目,作为合作编辑,为那些将要出版的材料把关,另外还有Anna Martelli Ravenscroft,我们一起作为此书第2版的主要编辑。
·O’Reilly将那些最好的技巧和心得集中起来出版,形成本书。
·作为本书作者版税,此书售卖的部分收入将捐赠给Python软件基金会。
本书的实现
在线cookbook(在http://aspn.activestate.com/ASPN/Cookbook/Python/)是所有的技巧和心得材料的一个入口。读者可以通过填写表格和一些相关信息来注册免费的账户。那些材料现在已经变成了本书的一部分。成千上万的用户阅读过那些材料,并且给出了相应的评论,因此,在本书的出版发行过程中,相关的材料已经变得越来越成熟和丰富。同时,作者的名字被印在书中也会吸引更多的人去访问在线cookbook。随着每月新的技巧和心得的持续增加,以及邮件列表中越来越多的人频繁地引用在线cookbook,可以期望这个在线cookbook也会取得极大的成功,这将再次证明作者的工作带给读者的巨大价值。
既然已经拥有了网站中的大量素材,那么实现这本书的工作就变成了挑选、合并、排序以及一些编辑工作了。这部分工作的一些细节将会在前言的“组织方式”部分介绍。
使用本书中的代码
本书的构思
在2000年初,O’Reilly的主编Frank Willison联系到我(David Ascher),问我是否想写一本书。Frank曾是Learning Python一书的编辑,那本书是由我和Mark Lutz合著而成。由于当时我正在致力于Perl shop(ActiveState)一书的编写,实在没有精力再同时开始另一本书的工作。但我和Frank总是定期地通过E-mail或者聊天工具对该书的一些主题进行探讨。Frank有个主意,他受到Tom Chriistiansen和Nathan Torkington编写的Perl Cookbook一书的启发,认为出一本类似的Python Cookbook将会很有趣。Frank想重复Perl Cookbook一书的成功,但他也认为应该让更多的人参与到此书的编写中。他的想法是,作为一本真正的cookbook,更多人的参与将会提供更多的思路、角度和品味。至于书籍的质量,他认为可以通过技术编辑的把关和O’Reilly严格的编辑流程来保障。
Frank和ActiveState的CEO Dick Hardt意识到Frank的目标和ActiveState的目标其实是殊途同归的。ActiveState的想法是为开源程序员创造一个网络社区,叫做ActiveState Programmer’s Network(ASPN)。ActiveState有一个人气很高的网站,提供了很丰富和多样化的内容。ActiveState充分认识到开源社区具有很强大的力量,它能够提供最新和最准确的内容,无论多么生僻的方面均有涉及。
O’Reilly和ActiveState很快认识到他们的目标上的相似性,并且意识到双方合作是最好的达成目标的方式。他们想要实现的包括:
·创建一个由Python程序员提供素材的在线Python Cookbook,为Python程序员服务;
·出版一本包括了最好素材的书,该书由Python社区中的一些关键人物提供的材料和想法综合而成;
·双方通过完成这本书亦可学习到一种不同的著书模式。
与此同时,有两件事情也需提及。首先,ActiveState的一些人,包括Paul Prescod,开始积极地寻找一些星级人物来加入ActiveState的开发小组中。其中一位候选者是著名的Alex Martelli(但那时我们还没听说过他)。Alex出名的原因是他在Python邮件列表中发表过大量透彻全面的文章,同时他也具有极好的耐心来解释Python的各种细微精巧之处,而且他非常高兴通过他自身的努力为Python带来了更多的新用户。我们不知道他的原因是,他住在意大利,而且对于Python社区来说他还算是一个新用户,Python老手们也从来没见过他。但其实在20世纪80年代的时候,Alex居住在美国,为IBM研发中心工作,并且很狂热地使用和推介其他的一些高阶语言(那时,大多是IBM的Rexx)。
ActiveState热切地期望Alex的到来,并试图劝说他搬到温哥华。我们已经是如此接近成功,可惜他的雇主给他带上了个金手铐,而且温哥华的天气明显无法与意大利的宜人气候竞争。所以,最后Alex仍然留在意大利,这让我很失望。即便如此,Alex当时仍然在与O’Reilly接洽和商议写一本书。Alex想写一本cookbook类型的书,但Python Cookbook当时已经签约。所以后来Alex和O’Reilly签了另外一本书Python in Nutshell的合同。
第二件同时进行的事就是创建Python软件基金会。由于各种各样的原因,这件事被当做最好的部分,在某个会议的结束酒会上被提出来,Python社区的成员想要创立一个非盈利性的组织,作为各种各样Python作品的知识产权的拥有者,这样可以确保Python及其衍生的作品有更加坚实的法律支撑。当然,这样的一个组织需要经济上的支持和Python社区的支持才能成功。
在综合考虑当时的各种情况之后,各方达成了以下协议:
·ActiveState将会创建一个在线cookbook,提供一种机制让任何人可以提交技巧(比如,针对某个特定问题的一段Python代码,以及相关的一些探讨,用以阐明为何以及在什么条件下使用这个窍门)。为了激发作者的积极性和读者的互动性,这个网站还允许读者提出修改建议和问题。
·作为我的ActiveState工作的一部分,我将编辑和确保这些材料的质量。Alex Martelli也加入了这个项目,作为合作编辑,为那些将要出版的材料把关,另外还有Anna Martelli Ravenscroft,我们一起作为此书第2版的主要编辑。
·O’Reilly将那些最好的技巧和心得集中起来出版,形成本书。
·作为本书作者版税,此书售卖的部分收入将捐赠给Python软件基金会。
本书的实现
在线cookbook(在http://aspn.activestate.com/ASPN/Cookbook/Python/)是所有的技巧和心得材料的一个入口。读者可以通过填写表格和一些相关信息来注册免费的账户。那些材料现在已经变成了本书的一部分。成千上万的用户阅读过那些材料,并且给出了相应的评论,因此,在本书的出版发行过程中,相关的材料已经变得越来越成熟和丰富。同时,作者的名字被印在书中也会吸引更多的人去访问在线cookbook。随着每月新的技巧和心得的持续增加,以及邮件列表中越来越多的人频繁地引用在线cookbook,可以期望这个在线cookbook也会取得极大的成功,这将再次证明作者的工作带给读者的巨大价值。
既然已经拥有了网站中的大量素材,那么实现这本书的工作就变成了挑选、合并、排序以及一些编辑工作了。这部分工作的一些细节将会在前言的“组织方式”部分介绍。
使用本书中的代码








点击看大图






加载中...

