Tôi đang tìm cách nhanh chóng và có thể thuận tiện trong Python 3 để dịch các chuỗi với các chữ cái không phải ascii thành các từ chỉ có chữ cái ascii.Dịch các chữ cái không có trong ASCII 7 bit thành ASCII (như ń sang n và ą thành a)
Ví dụ!
żółw => zolw
móżdżek => mozdzek
Łódź => lodz
và vân vân ...
Có rất nhiều chữ cái trong bảng chữ cái quốc gia có thể được biến thành Chữ cái ASCII (như ń đến n). Tôi có thể làm điều đó bằng tay cho ngôn ngữ của tôi (Ba Lan), bằng cách chỉ định cách dịch từng chữ cái. Nhưng có cách tự động nào để làm điều đó không? Hoặc một số thư viện mà sẽ làm những gì tôi cần?
Trăn str.encode()
sẽ không làm, vì "żółw".encode('ascii', 'replace') == "???w"
và "żółw".encode('ascii', 'ignore') == "w"
...
tôi có thể làm dịch như vậy cho chữ đánh bóng nhưng tôi không muốn làm điều đó cho mọi ngôn ngữ khác:
>>> 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'
Đoạn mã trên làm những gì tôi muốn với các chữ cái đánh bóng, nhưng nó xấu xí: < Cách tốt nhất để làm điều này là gì?
Tất nhiên bản dịch như vậy sẽ thay đổi ý nghĩa của một số từ, nhưng điều đó ok.
Hãy nhớ rằng trong một số ngôn ngữ, những gì một số sẽ xem xét một lá thư có dấu được coi là một chữ cái khác biệt trong ngôn ngữ đó. Ví dụ, chữ 'å' trong tiếng Thụy Điển thường được coi là một chữ cái riêng biệt từ 'a', và không chỉ đơn giản là chữ 'a' với một chiếc nhẫn ở trên nó. – dreamlax
Tôi biết điều đó ... Vấn đề là khi tôi viết bằng bút đánh bóng ở đâu đó, nơi các chữ cái quốc gia của tôi không được hỗ trợ, tôi sử dụng "bản dịch" này mà tôi đã viết. Tôi đoán mọi người từ các nước khác có cách viết riêng trong môi trường như vậy. Tôi muốn biết làm thế nào biến đổi như vậy có thể được thực hiện. – Maciek
@John Saunders, cảm ơn bạn đã trả lời hoàn toàn không hợp lệ. –