博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模块之shelve模块、xml模块、re模块
阅读量:4551 次
发布时间:2019-06-08

本文共 3300 字,大约阅读时间需要 11 分钟。

shelve模块

shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写,key必须为字符串,而值可以是python所支持的数据类型

import shelveinfo1={
'age':18,'height':180,'weight':80} 序列化:d=shelve.open('db.shv') d['egon']=info1 #['egon']就是相当于字典的key,而info1就相当于是字典的valued.close() 反序列化: d=shelve.open('db.shv') print(d['egon']) d.close() 改里面的数据: d=shleve.open('db.shv',writeback=True) d['egon']['age']=100 d.close

 

xml模块

xml是实现不同语言或程序之进行数据交换的协议,跟json差不多,但json使用起来更加简单,但是在json还没有被研发出来的时候,大家就只能用xml,至今还有很多传统公司如金融行业的很多系统的接口还主要是xml
xml的格式如下,就是通过<>节点来区别数据结构的
xml协议在各个语言里都是支持的,在python中可以用到

print(root.iter('year'))   #全文搜索print(root.find('country'))    #在root的子节点找,只找一个print(root.findall('country'))    #在root的子节点找,找所有

 

re模块

1.什么是正则?
正则就是用一些具有特殊含义的符号组和到一起(称为正则表达式)来描述字符或者字符串的方法。或者说正则就是用来描述一类事物的规则。
比如我们描述:4条腿
你可能会想到是四条腿的动物或者桌子椅子等
我再描述:四条腿,活的
那就只剩四条腿的动物这一类了
2.常用匹配模式

import re \w:匹配字母数字以及下划线 print(re.findall('\w','ab 12\+- *&_'))  #['a','b','1','2','_'] \W:匹配非字母数字下划线 print(re.findall('\w','ab 12\+- *&_'))  #[' ', '\\', '+', '-', ' ', '*', '&'] \s:匹配任意空白字符 print(re.findall('\s','ab \r1\n2\t\+- *&_'))  #[' ', '\r', '\n', '\t', ' ']
\S:匹配任意非空字符 print(re.findall('\S','ab \r1\n2\t\+- *&_'))  #['a', 'b', '1', '2', '\\', '+', '-', '*', '&', '_']
\d:匹配任意数字 print(re.findall('\d','ab \r1\n2\t\+- *&_'))  #['1', '2']
\D:匹配任意非数字 print(re.findall('\D','ab \r1\n2\t\+- *&_'))  #['a', 'b', ' ', '\r', '\n', '\t', '\\', '+', '-', ' ', '*', '&', '_']
\A:匹配字符串的开头 print(re.findall('\Aalex','alex is salexb'))  #['alex']
\^:匹配字符串的开头 print(re.findall('^alex','alex is salexb'))   #['alex']
\Z:匹配字符串的末尾 print(re.findall('sb\Z','alexsssb is sbalexbsb'))   #['sb']
\$;匹配字符串的末尾 print(re.findall('sb$','alexsssb is sbalexbsb'))    #['sb'] 重复匹配: .  ?  *  +  {m,n}  .*  .*? . :代表除了换行符外的任意一个字符 print(re.findall('a.c','abc alc aAc aaaaaaca\nc'))   #['abc', 'a1c', 'aAc', 'aac'] print(re.findall('a.c','abc a1c aAc aaaaaca\nc',re.DOTALL))    # ['abc', 'a1c', 'aAc', 'aac', 'a\nc']
? :代表左边那一个字符重复0次或1次 print(re.findall('ab?','a ab abb abbb abbbb abbbb'))    #['a', 'ab', 'ab', 'ab', 'ab', 'ab']
* :代表左边那一个字符出现0次或无穷次 print(re.findall('ab*','a ab abb abbb abbbb abbbb a1bbbbbbb'))   #['a', 'ab', 'abb', 'abbb', 'abbbb', 'abbbb', 'a']
+ :代表左边那一个字符出现1次或无穷次 print(re.findall('ab+','a ab abb abbb abbbb abbbb a1bbbbbbb'))    #['ab', 'abb', 'abbb', 'abbbb', 'abbbb']
{m,n}:代表左边那一个字符出现m次到n次 print(re.findall('ab?','a ab abb abbb abbbb abbbb'))       #['a', 'ab', 'ab', 'ab', 'ab', 'ab'] print(re.findall('ab{0,1}','a ab abb abbb abbbb abbbb'))     #['a', 'ab', 'ab', 'ab', 'ab', 'ab']
.* :匹配任意长度,任意字符——————》贪婪匹配 print(re.findall('a.*c',' ac a123c aaaa a *123)()c adssdsadsa'))   #['ac a123c aaaa a *123)()c'] .*? :非贪婪匹配 print(re.findall('a.*?c','a123c456c'))   #['a123c']
(): 分组 print(re.findall('(alex)_nb','alex_nb sdassadsalex_sb'))   #['alex','alex'] []: 匹配一个指定范围内的字符(这一个字符来自于括号内定义的) print(re.findall('a[0-9][0-9]c','a1c a+c a2c a9c a11c a-c acc aAc'))   #['a11c'] []内的^代表取反的意思 print(re.findall('a[^0-9]c','a c a1c a+c a2c a9c a*c a11c a-c acc aAc'))  #['a c', 'a+c', 'a*c', 'a-c', 'acc', 'aAc']
| :或者 print(re.findall('compan(ies|y)','Too many companies , and company'))    #['ies', 'y'] (?:):代表匹配成功的所有内容,而不仅仅只是括号内的内容 print(re.findall('compan(ies|y)','Too many companies , and company'))    #['companies', 'company']

 

转载于:https://www.cnblogs.com/gaobei/articles/8763617.html

你可能感兴趣的文章
rpm包管理工具
查看>>
rabbitmq安装(linux)遇到 很多坑
查看>>
mysql导入导出命令
查看>>
lrzsz
查看>>
base64字符串转化成图片
查看>>
关于同步异步阻塞非阻塞的理解(摘自)
查看>>
git使用常见问题
查看>>
mysql安装(centos7)
查看>>
关于mysql数据库连接异常处理
查看>>
jedis异常Broken pipe (Write failed)
查看>>
zookeeper安装(linux)
查看>>
MySQL导入sql文件,过大导致错误
查看>>
设计模式
查看>>
idea快捷键(最常用)
查看>>
sftp安装(linux)
查看>>
java第三方工具包
查看>>
bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
查看>>
mysql引擎与物理文件
查看>>
IOC&AOP
查看>>
升级 phpStudy 中 MySQL 版本至 5.7.17
查看>>