Published on

常用正则_python_re

官方文档

# 移除句子标点符号
import re
import string
from zhon.hanzi import punctuation

text = "I have - a dream . ?"
re.sub(r"[%s]+|[%s]+" % (punctuation, string.punctuation), "", text)
# output: "I have  a dream  " 需要处理连续空格


# 英文连在一起的句子拆开
def pre_tokenize(eng):
    def callback_repl(matchobj):
        return matchobj.group(1) + '. ' + matchobj.group(2)
    # 匹配 "I have a dream.We have" 为 dream. We
    # 注意. 后的匹配需要大写字母和小写字母同时拥有
    # 如果是 "have dream.I" 这样则不能匹配成功
    return re.sub('( [a-z0-9 ]{2,})\.([A-Z][a-z])', callback_repl, eng)



# 匹配一些特殊符号
question = re.compile(r'\?{3,}')   # ''三次及三次以上?
bad_mrk = re.compile(r'[¶©↓]')
re.search(bad_mrk, line)

# 替换句子中多个空格 为 1个空格
re.sub(r'\s{2,}', ' ', sentence)