Перевод букв не в 7-битном ASCII в ASCII (например, ń в n и ą в a)

Я ищу быстрый и, возможно, удобный способ в Python 3 переводить строки с буквами, отличными от ascii, в слова, содержащие только буквы ascii.

Примеры!

ółw => zolw

móżdżek => mozdzek

łód => lodz

и так далее ...

В национальных алфавитах много букв, которые можно преобразовать в буквы ASCII (например, ń к п). Я могу сделать это вручную для своего языка (польского), указав, как переводить каждую букву. Но есть ли какой-нибудь автоматический способ сделать это? Или какая-нибудь библиотека, которая сделает то, что мне нужно?

Pythons str.encode () не подойдет, потому что "żółw" .encode ('ascii', 'replace') == "??? w" и "żółw" .encode ('ascii', 'ignore') == "w" ...

Я могу сделать такой перевод для польских букв, но Я не хочу делать это для всех других языков:

>>> 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'

Приведенный выше код делает то, что я хочу, с полированными буквами, но это некрасиво: <Как лучше всего это сделать?

Конечно, такие переводы изменятся значения некоторых слов, но это нормально.

8
задан John Saunders 20 January 2012 в 01:02
поделиться