# -*- coding: utf-8 -*- import re frase="Se c'è qualcuno, p. es. un nativo di Creta, che dice di mentire, quel qualcuno sta mentendo. Parola di mentitore." print(frase) frase=re.sub("'","' ", frase) print(frase) frase=re.sub("[,;:]{1}"," \g<0>", frase) print(frase) frase=re.sub("\.\s[A-Z]{1}"," \g<0>", frase) print(frase) frase=frase.lower() print(frase) frase=frase.split() print(frase)
La r. 9 separa l'apostrofo dalla parola seguente. La r. 12 separa virgola, punto e punto e virgola dalla parola precedente. La r. 15 separa un punto dalla parola seguente a patto che sia seguito da una sequenza spazio-maiuscola.
Operazioni analoghe possono essere applicate a un testo letto da un file. La r. 6 taglia i primi caratteri del testo, che rappresentano il frontespizio dell'edizione informatica utilizzata. La r. 8 separa una serie di interpunti dalla parola precedente. La r. 9 separa un punto dal carattere precedente a patto che questo non sia un altro punto (in questo modo i tre punti non vengono separati).
import re f = open('testi/collodi_pinocchio.txt', mode='r', encoding='iso-8859-1') testo = f.read() testo=file.read() testo=testo[1704:] testo=re.sub("'","' ", testo) testo=re.sub('[,;:\-?!]{1}',' \g<0>',testo) testo=re.sub('([^\.]+)(\.)','\g<1> \g<2>',testo) testo=testo.lower() testo=testo.split()
Con le istruzioni seguenti gli interpunti vengono eliminati anziché essere considerati come parole grafiche.
import re f = open('testi/collodi_pinocchio.txt', mode='r', encoding='iso-8859-1') testo = f.read() testo=testo[1704:] testo=re.sub("'","' ", testo) testo=re.sub('[\.,;:\-?!]{1}','',testo) testo=testo.lower() testo=testo.split()
Per far sì che solo le maiuscole precedute da punto e spazio vengano convertite in minuscole occorre definire una funzione (qui denominata toLowercase):
import re def toLowercase(matchobj): return matchobj.group(0).lower() frase="Se c'è qualcuno, p. es. un nativo di Creta, che dice di mentire, quel qualcuno sta mentendo. Parola di mentitore." print(frase) frase=re.sub("'","' ", frase) print(frase) frase=re.sub("[,;:]{1}"," \g<0>", frase) print(frase) frase=re.sub("\.\s[A-Z]{1}"," \g<0>", frase) print(frase) frase=re.sub("\.\s[A-Z]{1}", toLowercase, frase) print(frase) frase=frase.split() print(frase) frase_bis="Se c'è qualcuno, p.es. Epimenide, che dice di mentire, quel qualcuno sta mentendo. Parola di mentitore."