我正在寻找一种快速且可能方便的方式在Python 3中将非ASCII字母的字符串转换为仅带有ascii字母的字词。将字母不是7位ASCII转换为ASCII(如将n转换为n并将其转换为±)
例子!
żółw=> zolw
móżdżek=> mozdzek
罗兹=>罗兹
等等...
有国家字母许多字母可以变成ASCII字母(如ñ到n)。我可以通过指定如何翻译每个字母来手动执行我的语言(波兰语)。但是有没有自动化的方法来做到这一点?或者一些图书馆会做我所需要的?
蟒蛇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'
上面的代码做了我想要的波兰语字母,但它很丑:<这样做的最好方法是什么?
当然,这样的翻译会改变一些单词的含义,但那是可以的。
请记住,在某些语言中,某些人认为重音字母被认为是该语言中的一个不同的字母。例如,瑞典语中的字母'å'通常被认为是'a'中的一个不同的字母,而不是简单的字母'a',在上面有一个圆环。 – dreamlax
我意识到这一点...关键是,当我在某处写作波兰语的地方,我的国家信件不被支持时,我使用我写的这个“翻译”。我猜其他国家的人在这种环境下有自己的写作方式。我想知道如何完成这样的转换。 – Maciek
@John Saunders,谢谢你让我的答案完全失效。 –