Coincidencia regular para extraer títulos en todos los niveles de documentos -- extracción de títulos

Escriba el título del directorio personalizado aquí

propósito principal

Extraiga directamente títulos de informes gubernamentales y otros documentos y cópielos en el mapa mental de xmind.
Modifique la lista para verificar el formato del título.

problemas encontrados

La asignación en exec es una variable local.
La puntuación china debe transcodificarse y combinarse por separado.

código fuente

import re

def pattern1(string):
    global tmp
    #patterns =re.compile(r'[\u4e00-\u9fa5]')
    patterns=re.compile(r"[一二三四五六七八九十]+、[\u4e00-\u9fa5\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b\w]+")
    tmp=re.match(patterns,string,0)
    if tmp==None:
        return tmp
    else:
        tmp = tmp.group(0)
        return
def pattern2(string):
    global tmp
    pattern=re.compile(r"[\((][一二三四五六七八九十]+[\))][\u4e00-\u9fa5\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b\w]+?\u3002")
    tmp=re.match(pattern,string,0)
    if tmp==None:
        return tmp
    else:
        tmp = tmp.group(0)
        return
def pattern3(string):
    global tmp
    pattern=re.compile(r"\d+[、.][\u4e00-\u9fa5\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b\w]+?\u3002")
    tmp=re.match(pattern,string,0)
    if tmp==None:
        return tmp
    else:
        tmp = tmp.group(0)
        return

def check(string):
    global tmp
    list=[1,2,3]
    for l in list:
        exec(f'pattern{
      
      l}(string)')
        if tmp!=None:
            print(tmp)
            return tmp
    return None

path=r'E:\huang\Desktop\AAA粘贴处理.txt'
output=r'E:\huang\Desktop\BBB标题输出.txt'
file=open(output,'w',encoding='ansi')
with open(path,'r') as f:
    for line in f.readlines():
        l=check(line.strip())
        if l!=None:
            file.write(l.strip()+'\n')
file.close()


Supongo que te gusta

Origin blog.csdn.net/qq_37639139/article/details/130751287
Recomendado
Clasificación