zoukankan      html  css  js  c++  java
  • 常用模块

    常用模块


    re模块


    1,什么是正规?
    正规就是用一些特殊含义的符号组合在一起,来描述字符或者字符串的方法,
    2常用匹配模式
    w :匹配字母数字以及下划线
    print(re.findall(‘w’,'hello egon 123'))
    W :匹配非字母数字下划线
    print(re.findall('W','ab 12+-*&_'))
    s :匹配任意空白字符,等价于【 f】
    print(re.findall('s','ab 1 2+-*&_'))
    S :匹配任意非空白字符
    print(re.findall('S','db 1 2 +-*&_'))
    d :匹配任何数字,等价于(0-9)
    print(re.findll('d','ab 1 2 +-*&_'))
    D :匹配非任何非数字
    print(re.findall('D','db 1 2 +-*&_'))
    A:匹配字符串开始
    print(re.findall('Aalex','abcalex is salexb'))
    :匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串
    print(re.findall('sb$','alexsb is sbalexbsb'))

    z:匹配字符串结束
    G:匹配最后匹配完成的位置
    :匹配一个换行符
    :匹配一个制表符
    ^:匹配·字符串开头
    print(re.findall('^h','hello egon 123'))
    $:匹配字符串的末尾
    print(re.findall('sb$','alexsb is abalexbsb'))
    .:匹配任意字符,除了换行符,当re。DOTALL标记被指定时,可以匹配包括换行符的任意字符。
    [...]:用来表示一组字符,单独例出:【amk】匹配‘a’,‘m’或者‘k’
    [^...]:不在[]中的字符:[^abc]匹配除了a,b,c之外的字符
    *:匹配0个或多个的表达式
    print(re.findall('ab*','a')) #['a']
    +:匹配1个或多个的表达式
    print(re.findall('ab+','a')) #[]
    ? :匹配0个或1个由前面1正则表达式定义的片段,非贪婪方法
    print(re.findall('ab?','a')) #['a']
    {n}:精确匹配n个前面表达式
    {n,m}:匹配n到m次由前面的正则表达式表达
    print(re.findall('ab{2}','abbb')) #['abb']
    d|b:匹配a或者b
    print(re.findall('compan(?:y|ies)','Too many companies have gone bankrupt, and the next one is my company'))
    # 重复匹配
    # . ? * + {m,n} .* .*?
    .: 代表除了换行符外的任意一个字符
    print(re。findall(‘a.c’,'abc alc aAc aaaaaca c'))

    print(re.findall('a.c','abc alc aAc aaaaaca c',re.DOTALL))

    ?: 代表左边哪一个字符重复0次或者1次
    print(re.findall('ab?','a ab abb abbb abbbb'))

    *: 代表左边哪一个字符出现0次或者无穷次
    print(re.findall('ab*','a ab abb abbb abbbbbb'))

    .*:匹配任意长度,任意的字符====》贪婪匹配
    print(re.findall('a.*c','ac al23c aaaac a *123)()c asbfasfdsdf'))
    ():匹配括号内的表达式,也表达一个组
    print(re.findall('ab+','ababab123'))

    .*? :非贪婪匹配
    print(re.findall('a.*?c','a123456c'))

    {m,n} :代表左边哪一个字符出现m次到n次
    print(re.findall('ab{0,}','a ab abbbb abbbbbb'))
    print(re.findall('ab{1,3}','a abbb abbbbbb abbbbbbb'))

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

    f=shelve.open(r'sheve.txt')
    # f['stu1_info']={'name':'egon','age':18,'hobby':['piao','smoking','drinking']}
    # f['stu2_info']={'name':'gangdan','age':53}
    # f['school_info']={'website':'http://www.pypy.org','city':'beijing'}

    print(f['stu1_info']['hobby'])
    f.close()

    xml模块


    (了解)
    xml是实现不同语言或程序之间进行数据交换的,和json差不多,没有json方便
    <?xml version="1.0"?>
    <data>
    <country name="Liechtenstein">
    <rank updated="yes">2</rank>
    <year>2008</year>
    <gdppc>141100</gdppc>
    <neighbor name="Austria" direction="E"/>
    <neighbor name="Switzerland" direction="W"/>
    </country>
    <country name="Singapore">
    <rank updated="yes">5</rank>
    <year>2011</year>
    <gdppc>59900</gdppc>
    <neighbor name="Malaysia" direction="N"/>
    </country>
    <country name="Panama">
    <rank updated="yes">69</rank>
    <year>2011</year>
    <gdppc>13600</gdppc>
    <neighbor name="Costa Rica" direction="W"/>
    <neighbor name="Colombia" direction="E"/>
    </country>
    </data>
    复制代码
    xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml:

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

  • 相关阅读:
    实验4:开源控制器实践——OpenDaylight
    实验3:OpenFlow协议分析实践
    实验2:Open vSwitch虚拟交换机实践
    第一次个人编程作业
    SDN实验1:SDN拓扑实践
    第一次博客作业
    LeetCode-1290.Convert Binary Number in a Linked List to Integer
    面试题 02.02. Kth Node From End of List LCCI
    剑指 Offer 24. 反转链表
    剑指 Offer 06. 从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/maojiang/p/8762350.html
Copyright © 2011-2022 走看看