Sto cercando un modo veloce e possibilmente conveniente in Python 3 per tradurre stringhe con lettere non ascii in parole con solo lettere ascii.Conversione di lettere non in ASCII a 7 bit in ASCII (come da ń a n e ą a a)
Esempi!
żółw => żółw
móżdżek => mozdzek
Łódź => Lodz
e così via ...
Ci sono molte lettere in alfabeti nazionali che possono essere trasformati in Lettere ASCII (come da ñ a n). Posso farlo manualmente per la mia lingua (polacco), specificando come tradurre ogni lettera. Ma esiste un modo automatico per farlo? O qualche biblioteca che farebbe quello che mi serve?
Pythons str.encode()
non lo farà, perché "żółw".encode('ascii', 'replace') == "???w"
e "żółw".encode('ascii', 'ignore') == "w"
...
posso fare tale traduzione per le lettere polacchi, ma non voglio farlo per tutte le altre lingue:
>>> utf8_letters = ['ą','ę','ć','ź','ż','ó','ł','ń','ś']
>>> ascii_letters = ['a','e','c','z','z','o','l','n','s']
>>> trans_dict = dict(zip(utf8_letters,ascii_letters))
>>> turtle = "żółw"
>>> out = []
>>> for l in turtle:
... out.append(trans_dict[l] if l in trans_dict else l)
>>> result = ''.join(out)
>>> result
'zolw'
Il codice sopra fa quello che voglio con le lettere polacche, ma è brutto: < Qual è il modo migliore per farlo?
Naturalmente tali traduzioni cambieranno il significato di alcune parole, ma questo è ok.
Ricordare che in alcune lingue ciò che alcuni considererebbero una lettera accentata è considerato una lettera distinta in quella lingua. Ad esempio, la lettera "å" in svedese è tipicamente considerata una lettera distinta da "a", e non semplicemente la lettera "a" con un anello sopra di essa. – dreamlax
Ne sono consapevole ... Il punto è che quando scrivo in polacco da qualche parte, dove le mie lettere nazionali non sono supportate, uso queste "traduzioni" di cui ho scritto. Immagino che persone di altri paesi abbiano i propri modi di scrivere in tali ambienti. Mi piacerebbe sapere come si possono fare tali trasformazioni. – Maciek
@John Saunders, grazie per aver reso la mia risposta completamente invalida. –