Utilizzo di Python 3.3. Voglio fare le seguenti operazioni:Python: metodo efficiente per sostituire gli accenti (é ae), rimuovere [^ a-zA-Z d s] e inferiore()
- sostituire caratteri alfabetici speciali quali e acuto (é) e O circonflesso (O) con il carattere di base (o per o, per esempio)
- rimuovere tutti i caratteri ad eccezione alfanumerico e spazi in mezzo alfanumerico caratteri
- convertire in minuscolo
Questo è quello che ho finora:
mystring_modified = mystring.replace('\u00E9', 'e').replace('\u00F4', 'o').lower()
alphnumspace = re.compile(r"[^a-zA-Z\d\s]")
mystring_modified = alphnumspace.sub('', mystring_modified)
Come posso migliorare? L'efficienza è una grande preoccupazione, soprattutto perché attualmente sto eseguendo le operazioni all'interno di un ciclo:
# Pseudocode
for mystring in myfile:
mystring_modified = # operations described above
mylist.append(mystring_modified)
I file in questione sono circa 200.000 caratteri ciascuno.
Non riesco a pubblicare una risposta perché questa domanda è contrassegnata erroneamente come duplicata, il che non è assolutamente, ma forse riuscirò a inserire la mia risposta in un commento. Fornito 'da unidecode import unidecode', il lavoro verrà eseguito da' '' .join (c per c in unidecode (mystring) .lower() se ord (c) nell'intervallo (97,123) o ord (c) == 32) .lstrip(). rstrip() '. Non è necessaria alcuna regex. – mmj