Progetto:Bot/Programmi in Python per i bot/regexLoad.py

Da Wikisource.
#!/usr/bin/env python
# -*- coding: cp1252 -*-
# legge un file UTF-8 con regex predisposte (vedi esempio sotto)
# e restituisce una lista di oggetti SRC e di stringhe subst
import re
def regexLoader(f="regex.txt"):
    r=unicode(open(f).read(),"utf-8")
    r=r.split("\n")
    if r[0].startswith(u'\ufeff'):
        r[0]=r[0][1:]
    regexList=[]
    for i in r:
        if not i.startswith("#") and i.strip()!="":
            regex=i.split("\t")
            regexList.append([re.compile(regex[0],int(regex[2])),regex[1]])
    return regexList
[visualizza] [modifica] Documentazione


Descrizione[modifica]

Lo script contiene un'unica funzione, che va integrata in uno script più esteso.

La funzione regexLoad() legge un file txt UTF-8 in cui sono memorizzate una serie di regex, una per riga, ciascuna delle quali contiene quattro elementi separati da tab:

  1. stringa regex,
  2. stringa subst,
  3. modificatori (in formato numerico),
  4. commento.

Le stringhe che iniziano con il carattere # sono ignorate. Quindi, per adattare la lista a un'opera, basta disattivare o attivare le regex opportune.

Esempio utilizzato per la pre-elaborazione python di OCR:

###############
# schemi regex
# elemento 1: espressione regex
# elemento 2: espressione subs
# elemento 3: codice parametri, da sommare (MULTILINE=8; IGNORECASE=2)
é	è	0
([^{])({)([^{])	\1(\3	0	conversione graffe singole in tonde
([^}])(})([^}])	\1)\3	0	conversione graffe singole in tonde
([^'])(')([^'])	\1’\3	0	conversione apostrofi singoli
\( 	(	0	normalizzazione spaziatura
 \)	)	0
 ([\.,;:?!])	\1	0	normalizzazione spaziatura
\r\n	\n	0
\*$	-	8	conversione apostrofo a fine riga in trattino
........

[[Categoria:|Bot/Programmi in Python per i bot/regexLoad.py]]