• split与re.split/捕获分组和非捕获分组/startswith和endswith和fnmatch/finditer 笔记


    split()对字符串进行划分:

    >>> a = 'a b c d'
    >>> a.split(' ')
    ['a', 'b', 'c', 'd']

    复杂一些可以使用re.split()

    >>> import re
    >>> re.split(r'[;,.]s', a)
    ['a', 'b', 'c', 'd']


    捕获分组和非捕获分组

    >>> a
    'a; b, c. d f'
    >>> re.split(r'(;|,|.|s)s*', a) # 捕获分组(会讲括号符合条件的字符匹配出来)
    ['a', ';', 'b', ',', 'c', '.', 'd', ' ', 'f']
    >>> re.split(r'(?:;|,|.|s)s*', a) # 非捕获分组(不会讲括号符合条件的字符匹配出来)
    ['a', 'b', 'c', 'd', 'f']


    startswith、endswith和fnmatch

    startswith()用来判断是否是以什么字符开头
    >>> a = 'index.py'
    >>> a.startswith('in')
    True
    
    endswith()判断字符是以什么结尾
    >>> a = 'index.py'
    >>> a.endswith('py')
    True
    
    fnmatch()用来匹配字符串
    >>> from fnmatch import fnmatch
    >>> fnmatch('index.py', '*.py')
    True
    值得注意的是:fnmatch()在window和linux操作系统上有区别
    # 在window操作系统上是成功的
    >>> fnmatch('index.py', '*.PY')
    True
    # 在Linux操作系统上使用失败
    >>> from fnmatch import fnmatch
    >>> fnmatch('index.py', '*.py')
    True
    >>> fnmatch('index.py', '*.PY')
    False

    如果想忽略该区别可以是fnmatchcase(),fnmatchcase()严格区分大小写

    >>> from fnmatch import fnmatchcase
    >>> fnmatchcase('index.py', '*.py')
    True
    >>> fnmatchcase('index.py', '*.PY')
    False


    finditer()将找到的全部的参数以迭代器的形式返回

    >>> import re
    >>> a = 'ahd; ncc,slf sa. e'
    >>> patt1 = re.compile(r'[a-z]+')
    >>> for i in patt1.finditer(a):
    ... print(i)
    ...
    <re.Match object; span=(0, 3), match='ahd'>
    <re.Match object; span=(5, 8), match='ncc'>
    <re.Match object; span=(9, 12), match='slf'>
    <re.Match object; span=(13, 15), match='sa'>
    <re.Match object; span=(17, 18), match='e'>
    >>> print(type(patt1.finditer(a)))
    <class 'callable_iterator'>

    当然:如果只是使用与文件匹配有个更好的选择就是glob模块

  • 相关阅读:
    cantor 数表
    利用form的“acceptcharset”在不同编码的页面间提交表单
    <li>标签,在文字超出宽度时引起混乱的解决办法
    java中 Integer.getInteger(String str)的疑惑
    SQL语句集锦
    禁用鼠标右键
    ROW_NUMBER() OVER函数的基本用法
    listview
    decodeResource
    LinkedList
  • 原文地址:https://www.cnblogs.com/namejr/p/9973240.html
Copyright © 2020-2023  润新知