字符串和文本


re.split
    任意定界切分字符串

str.startswith() | str.endswith()
    通过指定的文本模式去检查字符串的开头或者结尾
    name.endswith(('.c', '.h'))
    name.startswith(('http:', 'https:', 'ftp:')

from fnmatch import fnmatch, fnmatchcase
    用Shell通配符匹配字符串
    fnmatch('foo.txt', '*.TXT') 大小写是否敏感取决于操作系统
    fnmatchcase('foo.txt', '*.TXT') 大小写敏感

re.match,re.find,re.findall,re.finditer
    字符串匹配和搜索

str.replace,re.sub,re.subn
    字符串搜索和替换
    sub() 函数中的第一个参数是被匹配的模式,第二个参数是替换模式
        re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)
    subn() 同sub,同时返回替换次数
        newtext, n = re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)

    re.sub('python', 'snake', text, flags=re.IGNORECASE)

    以下函数解决忽略大小写后,保证被替换字符串与原有的保持一致
    def matchcase(word):
        def replace(m):
            text = m.group()
            if text.isupper():
                return word.upper()
            elif text.islower():
                return word.lower()
            elif text[0].isupper():
                return word.capitalize()
            else:
                return word
        return replace


    非贪婪匹配添加?
    跨行匹配  
        1. (.|\n)匹配所有字符,.是匹配除换行以外的所有字符
        2. comment = re.compile(r'/\*(.*?)\*/', re.DOTALL)

import unicodedata
    normalize() 第一个参数指定字符串标准化的方式。 NFC表示字符应该是整体组成(比如可能的话就使用单一编码),而NFD表示字符应该分解为多个组合字符表示
    combining() 函数可以测试一个字符是否为和音字符


strip() 方法能用于删除开始或结尾的字符
lstrip() 和 rstrip() 分别从左和从右执行删除操作
str.replace() 字符替换
str.translate() 通过转换字典来替换


ljust() , rjust() 和 center() 字符串对齐

    text.rjust(20,'=')
    text.center(20,'*')
    text.ljust(20)

format格式
    format(text, '=>20s') 左边补全=到20个字符
    format(text, '*^20s') 两边不全*到20个字符
    format(text, '<20')   右边补全空格到20个字符
    format(x, '^10.2f')   格式化浮点型总长度10,保留两位小数


str.join 
    字符串合并
    打印输出时指定分隔符,无需合并
    print(a, b, c, sep=':')


如果要被替换的变量能在变量域中找到, 可以结合使用 format_map() 和 vars()
    >>> name = 'Guido'
    >>> n = 37
    >>> s.format_map(vars())


import textwrap

    os.get_terminal_size() 获取终端的大小尺寸
    print(textwrap.fill(s, os.get_terminal_size()))


from html.parser import HTMLParser
    Html文本处理,将文本中的转义字符还原
    p = HTMLParser()
    p.unescape(s)

from xml.sax.saxutils import unescape
    XML文本处理,将文本中的转义字符还原
    unescape(s)

字符串令牌解析
    import re
    NAME = r'(?P<NAME>[a-zA-Z_][a-zA-Z_0-9]*)'
    NUM = r'(?P<NUM>\d+)'
    PLUS = r'(?P<PLUS>\+)'
    TIMES = r'(?P<TIMES>\*)'
    EQ = r'(?P<EQ>=)'
    WS = r'(?P<WS>\s+)'

    master_pat = re.compile('|'.join([NAME, NUM, PLUS, TIMES, EQ, WS]))
    scanner = master_pat.scanner('foo = 42')
    scanner.match()  ## 可以持续调用,直到不匹配或字符串结束停止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值