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模块-正则表达式介绍的主要内容,如果未能解决你的问题,请参考以下文章

Python全栈开发,Day2

python全栈开发-Day2 布尔流程控制循环

Python全栈_Day2

python 全栈开发 day2 字符编码与计算机容量

Python全栈之路Day2 (补)

老男孩Python全栈:Day2(上)