1、Preface
<dive into python >中遇到的一些感觉比较帅的代码,都属于代码片段,不全,这些是需要牢记的,方便以后造轮子或者回忆会用到的。
2、列表解析 #params是字典
return ";".join(["%s=%s" % (k, v) for (k, v) in params.items()])
3、列表过滤
(filter:可以完成同样的功能),思想:再循环中改变数据结构是很容易出问题的,所以多用map,filter等列表解析,列表过滤等内置函数。以数据为中心的编程思想,不要过多的花费时间在程序中函数的的每一个步骤。
elem forelem in li if li.count(elem)==1
4、压缩空格
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
5、列出目录下(C:\\)下所有子目录
dirname = "c:" [f for f in os.listdir(dirname) if os.path.isdir(os.path.join(dilename,f))]
所有该目录下的文件:
firname = "c:" [f for f in os.listdir(filename) if os.path.isfile(os.path.join(dilename,f))]
6、处理html:
import urllib #导入urllib模块 sock=urllib.urlopen(http://diveintopython.org/) #urlopen取回网页的整个文本对象,赋给sock htmlSource=sock.read() #返回一个字符串,将网页的html读到htmlSource中 sock.close() #关闭文本对象 print htmlSource #打印html内容
7、爬虫常用的:(这段代码主要是把一段URL的内容用特定的分析器可能是某种正则格式读出你需要的特性的内容)
import urllib usock = urllib.urlopen("http://diveintopython.org/") parser = URLLister() parser.feed(usock.read()) #返回的HTML转换成字符串,feed()是分析器表示调用start_a方法,url信息 保存在parse.urls中 parser.close() usock.close() for url in parser.urls: print url, "Dkf"
</pre></p></div></blockquote><h2>8、解析类文件对象:</h2></div><div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><pre name="code" class="python">import urllib import xml.dom import minidom usock=urllib.urlopen(http://....) #usock是类文件对象 xmldoc=minidom.parse(usock) #parse解析的是usock这个类文件对象,minidom.parse()会自动调用该对象的read函数,他不知道web上的内容等 usock.close() print xmldoc.toxml()
9、动态函数:单词变复数:
import re def rules(language): for line in file('D:\Project\python\dive into python\\rules.%s' % language): pattern, search, replace = line.split() yield lambda word: re.search(pattern, word) and re.sub(search, replace, word) def plural(noun, language='en'): for applyRule in rules(language): result = applyRule(noun) if result: print result