Giả sử tôi có chuỗi "blöt träbåt"
có một số a
và o
với âm sắc và đổ chuông ở trên. Tôi muốn nó trở thành "blot trabat"
đơn giản nhất có thể. Tôi đã thực hiện một số đào và tìm thấy các phương pháp sau đây: (. \u0308
cho umlauts)Cách tốt nhất để thay thế các ký tự quốc tế bằng các đối tác Latin gốc bằng Python là gì?
import unicodedata
unicode_string = unicodedata.normalize('NFKD', unicode(string))
này sẽ cung cấp cho tôi những chuỗi ở định dạng unicode với các nhân vật quốc tế chia thành thư cơ sở và kết hợp nhân vật Bây giờ để lấy lại này vào một chuỗi ASCII tôi có thể làm ascii_string = unicode_string.encode('ASCII', 'ignore')
và nó sẽ chỉ bỏ qua các ký tự kết hợp, dẫn đến chuỗi "blot trabat"
.
Câu hỏi đặt ra ở đây là: có cách nào tốt hơn để thực hiện việc này không? Nó cảm thấy như một đường vòng, và tôi đã nghĩ rằng có thể có một cái gì đó tôi không biết về. Tất nhiên tôi có thể gói nó lên trong một hàm trợ giúp, nhưng tôi muốn kiểm tra xem điều này có tồn tại trong Python không.
"Chuỗi ASCII" blöt träbåt "" là một mâu thuẫn. ASCII không có ký tự có dấu. Ý bạn là "Chuỗi Unicode"? – MSalters
Hey, đó chính xác là điều tôi đang làm trong C# ... –
Vâng tôi vừa mới nhận ra mình đã sử dụng sai thuật ngữ. Nó không nhất thiết phải là Unicode. Nó có thể được mở rộng ASCII (đó là những gì tôi thực sự có ý nghĩa.) – Blixt