Korzystanie z Python 3.3. Chcę wykonać następujące czynności:Python: skuteczna metoda zastępowania akcentów (é do e), usuwanie [^ a-zA-Z d s] i niższe()
- zastąpić specjalnych znaków alfabetycznych, takich jak e ostrego (E) i o daszkiem (O) z charakterem bazowej (O do O, na przykład)
- usunąć wszystkie znaki z wyjątkiem alfanumeryczny a przestrzenie pomiędzy nimi znaków alfanumerycznych
- nawrócony na małe
to, co mam tak daleko:
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)
Jak mogę to poprawić? Wydajność jest dużym problemem, zwłaszcza, że jestem obecnie wykonywanie operacji wewnątrz pętli:
# Pseudocode
for mystring in myfile:
mystring_modified = # operations described above
mylist.append(mystring_modified)
Pliki w pytaniu około 200.000 znaków każdy.
Nie mogę wysłać odpowiedzi, ponieważ to pytanie jest błędnie oznaczone jako duplikat, co absolutnie nie jest, ale może uda mi się umieścić moją odpowiedź w komentarzu. Dostarczone 'from unidecode import unidecode', zadanie zostanie wykonane przez' '' .join (c dla c w unidecode (mystring) .lower() jeśli ord (c) w zakresie (97,123) lub ord (c) == 32) .lstrip(). rstrip() '. Nie jest wymagane wyrażenie regularne. – mmj