Python语言总结 版本:v2.0 Crifan Li 摘要 本文主要介绍了个人目前已经发布整理的Python资料,以及和Python语言本身相关的总结 ,以及各种内置(str,unicode,json,OptionParser等)模块的总结,和第三方( Beautifulsoup等)库的总结,以及介绍Python方面的有价值的参考资料。 [提 本文提供多种格式供: 示] 在线阅读 HTML HTMLs PDF CHM TXT RTF WEBHELP 下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF WEBHELP HTML版本的在线地址为: http://www.crifan.com/files/doc/docbook/python_summary/release/html/ python_summary.html 有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论: http://www.crifan.com/bbs/categories/python_summary/ 2013-10-10 ┌─────────────────────────────────────────────────────────────────────────────┐ │修订历史 │ ├────────────────────────────────────────┬───────────────────────────┬────────┤ │修订 2.0 │2013-10-10 │crl │ ├────────────────────────────────────────┴───────────────────────────┴────────┤ │ 1. 把crifanLib.py独立出去称为单独的book │ │ 2. 把如何使用和运行Python脚本移至:python初级教程:入门详解 │ │ 3. 重新整理此book的架构 │ ├────────────────────────────────────────┬───────────────────────────┬────────┤ │修订 2012-11-06 │1.2 │crl │ ├────────────────────────────────────────┴───────────────────────────┴────────┤ │ 1. 将Python从language_summary移至此独立book │ │ 2. 添加了Python代码的格式化 │ │ 3. 添加了BeautifulSoup中find参数可以为正则表达式 │ │ 4. 添加了在Mac下运行Python脚本 │ │ 5. 更新crifanLib.py的最新链接 │ └─────────────────────────────────────────────────────────────────────────────┘ 版权 © 2013 Crifan, http://crifan.com 本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 目录 1. Python简介 1.1. Python的特点 2. 已发布的Python的相关资料 2.1. python初级教程:入门详解 2.2. python中级教程:开发总结 2.3. Python高级教程 3. Python语言本身的理解和心得 3.1. 学习python的本质就是学习对应的各种模块的用法 3.2. Python代码的格式化 3.3. 将py文件编译成pyc 3.4. for循环中的变量是只读的,不可修改 4. python内置模块学习心得 4.1. Python中re模块 4.2. Python中的json 4.3. Python参数处理模块:OptionParser和argparse 4.3.1. 利用OptionParser库中的add_option添加脚本参数和帮助信息 4.3.2. 官方建议放弃OptionParser,使用新的模块:argparse 4.4. Python中和字符串相关的内容(字符编码,str,Unicode等)的心得 5. Python第三方模块学习心得 6. Python相关资料 参考书目 第 1 章 Python简介 目录 1.1. Python的特点 1.1. Python的特点 1. 不需要编译,即可运行 2. 有很多特性,使得语言本身很方便编程者使用 第 2 章 已发布的Python的相关资料 目录 2.1. python初级教程:入门详解 2.2. python中级教程:开发总结 2.3. Python高级教程 之前自己折腾了很多Python方面的东西。 然后,后来就整理出了很多东西: • 系列教程 将相关的内容,整理成系列的教程: 1. Python初级教程 详见:第 2.1 节 “python初级教程:入门详解” 2. Python中级教程 详见:第 2.2 节 “python中级教程:开发总结” 3. Python高级教程 详见:第 2.3 节 “Python高级教程” • 库函数:crifanLib.py 将一些常用的功能,整理成通用的函数。 最终形成了自己的python的库函数 详见: 详解crifan的Python库:crifanLib.py 2.1. python初级教程:入门详解 关于Python方面的基础知识已移至: python初级教程:入门详解 包括下载合适版本的Python,安装Python等等内容。 [注 如何使用和运行Python脚本 意] 之前的,如何使用和运行Python脚本,也已移至: python初级教程:入门详解 中的对应位置: 如何在Windows环境下使用Python脚本 和: 如何在Mac环境下运行Python脚本 2.2. python中级教程:开发总结 后来,又整理了出了,开发过程中很多的心得, 然后把所有内容都放进了对应的教程: python中级教程:开发总结 2.3. Python高级教程 接着,对于Python,相对的一些知识点,专门整理出了一系列的教程,算是高级教程系列 。 目前已有: • Python专题教程:字符串和字符编码 • Python专题教程:抓取网站,模拟登陆,抓取动态网页 • Python专题教程:正则表达式re模块详解 • Python专题教程:BeautifulSoup详解 第 3 章 Python语言本身的理解和心得 目录 3.1. 学习python的本质就是学习对应的各种模块的用法 3.2. Python代码的格式化 3.3. 将py文件编译成pyc 3.4. for循环中的变量是只读的,不可修改 此处整理一下,关于Python语言本身,这方面的心得和体会: 3.1. 学习python的本质就是学习对应的各种模块的用法 python中有很多其他的库,帮你实现各种需要的功能,而你要做的事情,就是import对应 的库,然后调用对应的函数即可。 而利用python去编程,去实现一定的功能,更多的层面上,除了学习完python的基本语法 之后,就是对各种库,各种模块的如何使用上了,可以极大地提高你做事情的效率。 3.2. Python代码的格式化 python中,没有(类似于其他语言可用的,比如SourceFormatX之类的)代码格式话工具, 即意味着,你无法用工具,打开python文件,直接点击某个按钮,就可以帮你全部格式化 好了。 只能通过手工去格式化你的python代码 所谓手工,那就是,把属于每个函数(def关键字)所属代码,按照自己对代码的内在逻辑 的理解,去一行行的缩进 此工作,目前只能手工做,好像也没有其他更加方便的方法。 单独针对手工一行行的处理python代码,不同的工具中,实现的效率也会不同。 推荐使用Notepad++,因为此软件有很多方便你格式化Python代码的功能: • 可以显示所有特殊字符,包括空格,TAB键,行尾符等 具体参考:Notepad++支持显示回车符,换行符,TAB键,行首,行尾等特殊字符 • 支持将TAB键自动转换为空格 目的在于,对于Python这样的语言,是靠缩进来决定代码逻辑的,所以对于缩进,TAB 键和(4个连续的)空格,两者之间不是等价的,会产生语法错误的。 此时就可以利用Notepad++的,将TAB键自动转为(默认为4个,可以自定义个数)空格 ,实现很方便的代码格式化。 具体参考:Notepad++支持用空格取代TAB键 总之,关于Python代码的格式化,需要手动处理Python代码,而用Notepad++去处理,可以 极大地提高效率。 3.3. 将py文件编译成pyc 参考这里,启动Python的IDE – IDLE (Python GUI) 然后在里面输入: import py_compile 回车(↵)后再输入: py_compile.compile(r"E:\dev_root\Python25\Lib\sgmllib.py") 就可以将对应的py文件编译成pyc了,生成的sgmllib.pyc在同目录下。 3.4. for循环中的变量是只读的,不可修改 在使用for循环时,要注意其所得的单个变量,是只读的,不能修改。 想要修改其值的话,只能借助其他变量实现。 示例代码如下: for singleContent in soupContents: #singleContent is BeautifulSoup.Tag ...... if(recursive): ...... filteredSingleContent = singleContent; # here must use another tmp value to store changed value filteredSubContentList = removeSoupContentsTagAttr(filteredSingleContent.contents, ......); ...... filteredSingleContent.contents = filteredSubContentList; # here if use singleContent.contents = filteredSubContentList will cause error !!! #logging.debug("[%d] after filter, sub contents=%s", currentLevel, filteredSingleContent); filtedContents.append(filteredSingleContent); else: ...... 第 4 章 python内置模块学习心得 目录 4.1. Python中re模块 4.2. Python中的json 4.3. Python参数处理模块:OptionParser和argparse 4.3.1. 利用OptionParser库中的add_option添加脚本参数和帮助信息 4.3.2. 官方建议放弃OptionParser,使用新的模块:argparse 4.4. Python中和字符串相关的内容(字符编码,str,Unicode等)的心得 此处整理一些,Python内置的各种模块的使用心得: 4.1. Python中re模块 Python中的re模块的相关使用心得,请参见 Python专题教程:正则表达式re模块详解 4.2. Python中的json 相关内容已移至: Python中处理JSON字符串 4.3. Python参数处理模块:OptionParser和argparse 4.3.1. 利用OptionParser库中的add_option添加脚本参数和帮助信息 在写脚本的时候,可以利用add_option去添加对应的参数解析以及帮助信息,而剩下的事 情,如何去解析对应的参数和显示帮助信息,都是由OptionParser自动完成了。 参考如下内容: from optparse import OptionParser def main(): #main procedure begin parser = OptionParser() parser.add_option("-s","--source",action="store", type="string",dest="srcURL",help="source msn/live space address") parser.add_option("-f","--startfrom",action="store", type="string",dest="startfromURL",help="a permalink in source msn/live space address for starting with, if this is specified, srcURL will be ignored.") parser.add_option("-x","--proxy",action="store",type="string",dest="proxy",help="http proxy server, only for connecting live space.I don't know how to add proxy for metaWeblog yet. So this option is probably not useful...") (options, args) = parser.parse_args() #export all options variables for i in dir(options): exec i+" = options."+i #add proxy if proxy: XXX if startfromURL : XXX elif srcURL: XXX else: logging.error("错误XXX") sys.exit(2) 然后我们就可以在运行脚本的时候,添加参数了,比如: BlogsToWordpress.py -s http://hi.baidu.com/recommend_music 想要查看帮助信息,就是常见的-h或–help: BlogsToWordpress.py -h 更多例子和解释,可以参考这里: python模块学习——optparse 4.3.2. 官方建议放弃OptionParser,使用新的模块:argparse 根据官网的解释,其实optparse已废弃,建议使用最新的更好用的argparse 此处之所以还继续介绍optparse主要是由于之前还是一直用的是optparse,而argparse自 己只是试用过,不是很熟悉。 在可以看懂官网的例子的前提下,还是建议使用argparse 4.4. Python中和字符串相关的内容(字符编码,str,Unicode等)的心得 字符编码相关的内容,已整理至: Python专题教程:字符串和字符编码 第 5 章 Python第三方模块学习心得 此处整理Python的第三方的模块,库等的学习心得: 前面第 3.1 节 “学习python的本质就是学习对应的各种模块的用法”已经说了, 其实学习Python的过程,很多时候就是在学习如何使用第三方模块,完成自己需要的功能 。 下面就来总结一下,关于,Python的第三方的模块方面的学习心得和体会: 5.1. 去哪找python的第三方类库 关于Python的第三方库类库,其实网上很多很多相关资料。 其中,官网的Python库:Python Package Index,其中有N多N多的库,有需要的人,可以 去那里找找。 其他的网上的N多资源中,我觉得值得看看的有: 1. http://www.elias.cn/Python/HomePage中的3.3 用第三方类库的部分。 5.2. BeautifulSoup 关于BeautifulSoup相关的内容已整理至独立教程: Python专题教程:BeautifulSoup详解 第 6 章 Python相关资料 此处记录一些不错的Python相关的资料,供需要时参考: 1. 简明Python教程 Swaroop, C. H. 著,>沈洁元译 特点:内容很全。 2. 关于python的中文文档 这里:http://www.elias.cn/Python/HomePage介绍了很多的资源。其中就有python教 程的中文版 参考书目 [1] Python基础篇 [2] Big5 (Traditional Chinese) character code table [3] 简繁转换 [4] Unicode Lookup