Poszukuję szybkiego i możliwie wygodnego sposobu w Pythonie 3 do tłumaczenia ciągów z nie-ASCII literami na słowa zawierające tylko litery ASCII.Tłumaczenie liter nie w 7bit ASCII na ASCII (jak ń na n i ą na a)
Przykłady!
Żółw => Żółw
móżdżek => móżdżek
Łódź => Łódź
i tak dalej ...
Istnieje wiele litery alfabetów narodowych, które mogą stać się Litery ASCII (jak od ń do n). Mogę to zrobić ręcznie dla mojego języka (polskiego), określając, jak tłumaczyć każdą literę. Ale czy istnieje zautomatyzowany sposób na zrobienie tego? Albo jakąś bibliotekę, która zrobiłaby to, czego potrzebuję?
Pythons str.encode()
nie zrobi, bo "żółw".encode('ascii', 'replace') == "???w"
i "żółw".encode('ascii', 'ignore') == "w"
...
mogę zrobić takie tłumaczenie dla polskich liter, ale nie chcę, aby to zrobić na każdym innym języku:
>>> 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'
Powyższy kod robi co chcę z polskimi literami, ale jest brzydki: < Jaki jest najlepszy sposób na zrobienie tego?
Oczywiście takie tłumaczenia zmienią znaczenie niektórych słów, ale to jest w porządku.
Należy pamiętać, że w niektórych językach to, co niektóre uznałoby za akcentowaną literę, jest uważane za odrębną literę w tym języku. Na przykład litera "å" w języku szwedzkim jest zwykle uważana za odrębną literę od "a", a nie po prostu literę "a" z pierścieniem nad nią. – dreamlax
Jestem tego świadomy ... Chodzi o to, że kiedy piszę po polsku, gdzie moje listy narodowe nie są obsługiwane, używam tych "tłumaczeń", o których pisałem. Sądzę, że ludzie z innych krajów mają swoje własne sposoby pisania w takich środowiskach. Chciałbym wiedzieć, jak można dokonać takich transformacji. – Maciek
@John Saunders, dzięki, że moja odpowiedź jest całkowicie nieważna. –