python爬虫入门(1) 基础知识 ; 正则表达式 Re 模块
来源:互联网 发布:淘宝客返利怎么设置 编辑:程序博客网 时间:2024/05/21 07:50
我们会学到python内置方法,Re模块,Urllib模块,Urllib2模块,cookielib模块,我们先把基础函数都掌握了,基础打牢,再去实战,再研究高级的知识。
一、python 基础知识复习
我将列出与c++不同的一些基础知识
- List (c++中的数组,也可以说是vector因为他可以自由伸缩长度,Java和C#中也有list)
构造
list = ["1", "2"]
切片 (C++中的下标索引)
poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"] poets[1:5] # 从下标1开始取,至第5个内(不包括5)1 <= x < 5 # ['dufu', 'luyou', 'wangwei', 'sushi'] poets[-1] # -1直接获取最后一个元素 # yanshu poets[3:-1] # 如果想取最后一个元素,不能这样写,这样包含-1在内,应该是这样写 poets[3:] # ['wangwei', 'sushi', 'qinguan', 'qinshaoyou', 'liyu'] poets[::2] # 最后一个参数 相当于步长,每隔元素就取一个 # ['libai', 'luyou', 'sushi', 'qinshaoyou', 'yanshu']追加
poets.append("dumu")
#当然是插在最后面的,学过java的或者c++ STL的应该很熟悉
插入
poets.insert(1, sancao)
删除
poets.remove("libai")
统计
List1 = ["a", "v", "b", "a", "a", " ", "",1] List1.count("") # 统计元素的个数# 3
获取下标
List1 = ["a", "v", "b", "a", "a", " ", "", 1] List1.index("a") # 如果有多个相同,至返回第一个元素的下标
排序,翻转
List3.sort()
List3.reverse()
拷贝
List2 = List1.copy()
- tuple(元组,元组和list是差不多的,如果你学java会发现list和tuple的区别很想string和stringbuffer)
构造
tup = ("1", "2") 元组小括号,列表中括号切片 (C++中的下标索引) 和list相同
修改 不可修改删除元组 del tup
元组内置函数
比较两个元组元素。2len(tuple)
计算元组元素个数。3max(tuple)
返回元组中元素最大值。4min(tuple)
返回元组中元素最小值。5tuple(seq)
将列表转换为元组。
- Dict(c++中的map , php中的array,java中也有)
构造
dic = {
'a':'1234',
}
访问
dic['a']
修改
dic['a']='2345'删除
del dic['a']
del.clear()
删除字典内所有元素2dict.copy()
返回一个字典的浅复制3dict.fromkeys(seq[, val]))
创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值4dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值5dict.has_key(key)
如果键在字典dict里返回true,否则返回false6dict.items()
以列表返回可遍历的(键, 值) 元组数组7dict.keys()
以列表返回一个字典所有的键8dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default9dict.update(dict2)
把字典dict2的键/值对更新到dict里10dict.values()
以列表返回字典中的所有值11pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。12popitem()
随机返回并删除字典中的一对键和值。
- 生成列表
>>> range(1, 11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> L = []>>> for x in range(1, 11):... L.append(x * x)... >>> L[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> [x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
- 条件过滤
>>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, 36, 64, 100]
请编写一个函数,它接受一个 list,然后把list中的所有字符串变成大写后返回,非字符串元素将被忽略。
提示:
1. isinstance(x, str) 可以判断变量 x 是否是字符串;
2. 字符串的 upper() 方法可以返回大写的字母。
def toUppers(L): return [ i.upper() for i in L if isinstance(i,str) ]print toUppers(['Hello', 'world', 101])
- 内置函数,慢慢学吧!
abs()divmod()input()open()staticmethod()all()enumerate()int()ord()str()any()eval()isinstance()pow()sum()basestring()execfile()issubclass()print()super()bin()file()iter()property()tuple()bool()filter()len()range()type()bytearray()float()list()raw_input()unichr()callable()format()locals()reduce()unicode()chr()frozenset()long()reload()vars()classmethod()getattr()map()repr()xrange()cmp()globals()max()reversed()zip()compile()hasattr()memoryview()round()__import__()complex()hash()min()set() delattr()help()next()setattr() dict()hex()object()slice() dir()id()oct()sorted()exec 内置表达式二、正则表达式
正则表达式在哪都很重要,一个程序员没有一个不会正则表达式的。。正则表达式其实就是用来匹配字符串的,比如你要的数据是王某某,那么他可以匹配到姓王的人,很方便
正则表达式速查表
n
”匹配字符“n
”。“\n
”匹配一个换行符。串行“\\
”匹配“\
”而“\(
”则匹配“(
”。\n
”或“\r
”之后的位置。\n
”或“\r
”之前的位置。z
”以及“zoo
”。*等价于{0,}。zo+
”能匹配“zo
”以及“zoo
”,但不能匹配“z
”。+等价于{1,}。do(es)?
”可以匹配“does
”或“does
”中的“do
”。?等价于{0,1}。o{2}
”不能匹配“Bob
”中的“o
”,但是能匹配“food
”中的两个o。o{2,}
”不能匹配“Bob
”中的“o
”,但能匹配“foooood
”中的所有o。“o{1,}
”等价于“o+
”。“o{0,}
”则等价于“o*
”。o{1,3}
”将匹配“fooooood
”中的前三个o。“o{0,1}
”等价于“o?
”。请注意在逗号和两个数之间不能有空格。oooo
”,“o+?
”将匹配单个“o
”,而“o+
”将匹配所有“o
”。\
n
”之外的任何单个字符。要匹配包括“\
n
”在内的任何字符,请使用像“(.|\n)
”的模式。\(
”或“\)
”。(|)
”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)
”就是一个比“industry|industries
”更简略的表达式。Windows(?=95|98|NT|2000)
”能匹配“Windows2000
”中的“Windows
”,但不能匹配“Windows3.1
”中的“Windows
”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。Windows(?!95|98|NT|2000)
”能匹配“Windows3.1
”中的“Windows
”,但不能匹配“Windows2000
”中的“Windows
”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始(?<=95|98|NT|2000)Windows
”能匹配“2000Windows
”中的“Windows
”,但不能匹配“3.1Windows
”中的“Windows
”。(?<!95|98|NT|2000)Windows
”能匹配“3.1Windows
”中的“Windows
”,但不能匹配“2000Windows
”中的“Windows
”。z|food
”能匹配“z
”或“food
”。“(z|f)ood
”则匹配“zood
”或“food
”。[abc]
”可以匹配“plain
”中的“a
”。[^abc]
”可以匹配“plain
”中的“p
”。[a-z]
”可以匹配“a
”到“z
”范围内的任意小写字母字符。[^a-z]
”可以匹配任何不在“a
”到“z
”范围内的任意字符。er\b
”可以匹配“never
”中的“er
”,但不能匹配“verb
”中的“er
”。er\B
”能匹配“verb
”中的“er
”,但不能匹配“never
”中的“er
”。c
”字符。[A-Za-z0-9_]
”。[^A-Za-z0-9_]
”。\x41
”匹配“A
”。“\x041
”则等价于“\x04&1
”。正则表达式中可以使用ASCII编码。.(.)\1
”匹配两个连续的相同字符。常用正则表达式
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
- python re 模块 下面我会翻译re模块在官方的解释,使用和实例,最重要的是match和search
- 参考了菜鸟教程
re.compile函数
这个匹配的字符串要用到match函数和search函数中,其方法效果是等价的,看下面的例子
The sequence
is equivalent to
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.match(正则表达式, string,表达式修饰符(选填))
re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
re.search(正则表达式,string,表达式修饰符(选填))
正则表达式修饰符 - 可选标志
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
group
re.sub方法
用于替换字符串中的的匹配项。re.sub(正则表达式,替换字符串或函数,string,匹配后的最大次数(默认全部),表达式修饰符)
如果替换的是函数:
re.split方法
用于分割字符串中的的匹配项。re.split(正则表达式,string,maxsplit,表达式修饰符)
re.escape方法
返回的数都有反斜杠。re.escape(正则表达式)
re.findall方法
返回所有匹配的字符串。findall(正则表达式,string,表达修饰符)
基本上re模块的函数都在这里了。
阅读全文
0 0
- python爬虫入门(1) 基础知识 ; 正则表达式 Re 模块
- Python爬虫实践(八):正则表达式re模块(2)
- python爬虫02 re模块与正则表达式
- Python爬虫正则表达式和re模块系列之七
- Python re(正则表达式)模块
- Python 正则表达式(re模块)
- python中的re模块(正则表达式)
- python中的正则表达式(re模块)
- python re模块(正则表达式)
- python中的正则表达式(re模块)
- python re 模块及正则表达式调用认识(1)
- python正则表达式:re模块
- Python 正则表达式 re模块
- Python 正则表达式,re模块
- Python re模块正则表达式
- Python正则表达式re模块
- Python正则表达式,re模块
- python 正则表达式 re模块
- 初学R语言
- Java中Comparable和Comparator区别小结
- 制作动图——imagemagick
- cake (gcd)【HDU】-1722
- 读书笔记——深入理解java虚拟机
- python爬虫入门(1) 基础知识 ; 正则表达式 Re 模块
- Cow Hurdles POJ-3615-------没想到不会TLE的Floyd算法
- Java中重载(Overloading)与重写(Overriding)的区别
- Android逆向分析——ZjDroid
- spring boot数据库操作(以mysql为例)
- HDU 6072 Logical Chain(Kosaraju+bitset优化)
- LeetCode 49. Group Anagrams (Python)
- 一位资深程序员大牛给予Java初学者的学习路线建议
- 非常好用的php在线工具 http://www.dooccn.com/php/ (还包括其它很多语言, 棒棒哒!)