python基础整理笔记(五)

一. python中正则表达式的一些查漏补缺

1. python基础整理笔记(五)

给括号里分组的表达式加上别名;以便之后通过groupdict方法来方便地获取。

2. python基础整理笔记(五)

将之前取名为"name"的分组所获得的字符串,作为本次分组匹配的标的。所以使用(?P=name)前,在正则表达式中,必须已经有了名为name的带命名的分组,即有了类似的(?P<name>)。

此外需要注意的是,(?p=name)只是用来匹配,即只能适用于:re.search,re.match,re.find,re.findall等用来查询,匹配的正则表达式中。

3. \g<name> 需要注意的是这是在re.sub中应用分组匹配到的字符串的方法,与上面的不同。

4. 对search,match获得的句柄对象的操作整理:

a. group([group1, …]):
获得分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。 (后面这些各种情况的细节需要尤其注意)

b. groups([default]):
以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None

c. groupdict([default]):
配合返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。

d. start([group]):
返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。

e. end([group]):
返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。

f. span([group]):
返回(start(group), end(group))。

g. expand(template):
将匹配到的分组代入template中然后返回。template中可以使用\id或\g<id>、\g<name>引用分组,但不能使用编号0。\id与\g<id>是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符'0',只能使用\g<1>0。

二. pickle库

pickle是用来序列化和反序列化python中对象的模块。此外在2.7中可以使用cPickle代替pickle,前者是C实现的,效率更高。(In Python 2, there were two implementations of the pickle module, one written in pure Python and another written in C (but still callable from Python). In Python 3, these two modules have been consolidated, so you should always just import pickle.)

pickle的常用方法如下:

 import pickle

 a = {1: 2, 2: 3}

 data1 = pickle.dumps(a)
data2 = pickle.loads(a)

dumps 用于序列化对象,即将一个对象变为字符串。相对的,loads是从一个序列化的字符串,反序列化之并还原为一个对象。

pickle还有两个直接与文件对象交互的方法如下:

 import pickle

 aa = {1: 2, 2: 3}

 f=open('d:\\p.txt','w')
pickle.dump(aa,f,0)
f.close() f=open('d:\\p.txt','r')
bb=pickle.load(f)
f.close()

dump,load和上面的dumps以及loads效果是一样的,只不过dump和load还会多一个参数,即一个文件句柄,可以直接从这对应的文件里面写或读字符串并序列或反序列化之。

上一篇:原生Ajax写法(GET)


下一篇:HDU 5984 数学期望