2018-06-27-Python全栈开发day22-part2-xml模块和re模块-正则表达式介绍
Posted 叶海宾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-06-27-Python全栈开发day22-part2-xml模块和re模块-正则表达式介绍相关的知识,希望对你有一定的参考价值。
1.xml模块
xml模块是在json出现之前,普遍使用的文件类型,
<data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year updated="yes">2010</year> <gdppc>141100</gdppc> <neighbor direction="E" name="Austria" /> <neighbor direction="W" name="Switzerland" /> </country> <country name="Singapore"> <rank updated="yes">5</rank> <year updated="yes">2013</year> <gdppc>59900</gdppc> <neighbor direction="N" name="Malaysia" /> </country> </data>
这是xml的类型,其中<data>是tree,是个树形结构,并且以tree结尾
root.get.root()--得到根
首先遍历xml文件
import xml.etree.ElementTree as ET tree=ET.parse(‘xml_lesson‘) root=tree.getroot()
之后print(root.tag),得到的结果就是data
for i in root:#遍历root,得到的每个值都是data下的数据 print(i.tag)#输出数据的标签 print(i.attrib)#输出每个标签的属性 for j in i: print(j.tag)#继续输出每个标签 print(j.attrib)#输出属性
属性是用来对标签进行描述的
1.1 对xml文件进行增删改查
for i in root.findall(‘country‘):#遍历xml文件中,所有标签为country的 rank=int(i.find(‘rank‘).text)#找到country中属性为rank的 if rank>50: root.remove(i)#如果rank大于50则删除 tree.write(‘xmltree.xml‘)#写入文件
1.2新建xml文件并写入数据
new_xml=ET.Element(‘yehiabin‘)#新建一个根为yehaibin的xml文件 name=ET.SubElement(new_xml,‘name‘,attrib={‘enrolled‘:‘yes‘})#在根下面创建name标签,并且通过属性进行修饰 age=ET.SubElement(new_xml,‘age‘,attrib={‘hahah‘:‘no‘})#另外增加一个标签 sex=ET.SubElement(new_xml,‘sex‘) sex.text=‘20‘#.text是标签中数字 et=ET.ElementTree(new_xml)#写入文件
2. re模块-正则表达式
正则表达式,对字符串进行模糊匹配,在查找数据以及在web中有很多的应用场景
简介
2.1 . 通配符
.点这个符号,可以代表除外的任何符号,来 进行模糊匹配
2.2 ^$
代表从开头以什么开始,和在结尾以什么结束
2.3关于重复的
2.3.1 *
表示重复0次或者无穷多次
2.3.2 +
表示重复1次或者无穷多次
2.3.3 ?
重复0或1次
2.3.4 {1,8}
重复1-8次
2.4 []
中括号,在中括号内部特殊符号都不起作用,除了-,^,
其中,^在中括号内,是非的意思,中括号中的,可以让有意义的变为没意义,没意义的变成有意义
其中:
d-取任何十进制的数
D-与d相反
s--取任何空白字符
S---与s相反
w-取任何字母和数字
W---与w相反
并且在使用w这些符号时,要考虑到,re本身就是一种微型语言,我们在将等数据传给python解释器时,python会翻译一遍之后再给re。翻译之后的数已经失去了原来的意义,所以要\b,因为re模块只认识\b
只能从[]中取出一个值进行匹配
其内部的元素起到或的作用
a=re.findall(‘x[xyu]‘,‘xy0‘) print(a) -- [‘xy‘]
2.5 |
管道符,也是或的意思
2.6()
分组,将某几个元素进行组合然后进行匹配
a=re.findall(‘(bc)+‘,‘askfjhbcbcjkhfdksa‘) print(a)
2.6.1 固定搭配
a=re.search(‘(?P<yehaibin>d+)‘,‘546kfdgjldfk‘).group() print(a)
2.7 findall()
找到所有符合匹配的,并且放到列表中
2.8 search()
只找到第一格,然后返回值
2.9 match()
b=re.match(‘d+‘,‘dsjhfdi5456‘) print(b)
从头开始找,如果开头没有则返回none
2.10 split()
a=re.split(‘ab‘,‘abc‘) print(a)
--
[‘‘,‘c‘]
先对ab进行分割,对应匹配的ab左边没有东西,所以得到空的字符串,和‘c‘,然后ab再跟c进行匹配,没有匹配上,输出c
2.11 sub() 替换
a=re.sub(‘d‘,‘abc‘,‘fhsdk3fhsdk‘) print(a)-- fhsdkabcfhsdk
一共有三个参数,第一个是匹配的方式,第二个是替换之后的呢日荣,第三个是需要查找的对象,然后进行替换
2.12compile() 编译
直接先制定规则,之后可以重复用
com=re.complie(‘d+)
res=com.findall(‘sfhkfds2kjdsl)
这样就可以对多个对象进行查询,这样就不用重复写匹配规则
2.13 finditer()
将匹配的东西放到一个迭代器中
以上是关于2018-06-27-Python全栈开发day22-part2-xml模块和re模块-正则表达式介绍的主要内容,如果未能解决你的问题,请参考以下文章