如何用字符来描述字符:
\d匹配数字 digit
\w匹配字母或数字 word
\s可以匹配空格 space
* 表示任意个字符, +表示至少一个字符 ?表示0个或1个字符, {n} 表示n个字符, {n,m}表示n-m个字符 .可以匹配任意字符
例如: Kongxiangyu
\w{11}
如何做到更精确的匹配? 规定数字、字母或者下划线
[0-9a-zA-Z\_]可以匹配一个数字、字母或下划线
[a-zA-Z\_]
^ 表示行的开头
$ 表示行的结束
re模块
python的 r前缀,可以不考虑转义的
分组
联系excel表格中的通配符的使用
字符串 \d{3}\-\{3-8} 010-21321
更精确的匹配: [ ]表示范围
python高级特性:
切片
“之所以是笨办法是因为扩展一下,取前N个元素就没辙了。” 【抽象代表更加聪明的做法,普遍性】
“对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。” 【Slice的本质是循环+提取】
迭代:
iteration (遍历/迭代)
for in 语句,直接作用于整个iterable subject 包括 string dict list
实现下标循环:
for i, value in enumerate(['a', 'b', 'c']) print (i, value)
for x, y in [(1,1), (2, 4), (3, 9)]:
print(x, y)
列表生成器:
list(range(1,4) L = [] for x in range(1, 11): L.append(x * x) #循环 逐个添加 [x * x for x in range(1, 11) if x%2 == 0] #函数 + 循环 + 条件语句
dict.value() dict.items() 返回key值和 value值
生成器(generator):python中一边循环一遍计算的机制
方法1: 将列表生成器的 [ ] 改为() 同时区分
print 用来打印 和 next() 获得generator的下一个返回值
“我们讲过,generator保存的是算法,每次调用
next(g)
,就计算出
g
的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出
StopIteration
的错误。”【生成器保存的是算法,将其看做一个动态的过程而不能直接认为是生成好的list元素】