Có cách nào tiêu chuẩn, trong Python, để bình thường hóa một chuỗi unicode, để nó chỉ hiểu các thực thể unicode đơn giản nhất có thể được sử dụng để biểu diễn nó?Bình thường hóa Unicode
Ý tôi là, thứ gì đó sẽ dịch một chuỗi như ['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
thành ['LATIN SMALL LETTER A WITH ACUTE']
?
Xem mà là vấn đề:
>>> import unicodedata
>>> char = "á"
>>> len(char)
1
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A WITH ACUTE']
Nhưng bây giờ:
>>> char = "á"
>>> len(char)
2
>>> [ unicodedata.name(c) for c in char ]
['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
tôi có thể, tất nhiên, lặp trên tất cả các ký tự và làm thay thế sử dụng, vv, nhưng nó không phải là hiệu quả, và tôi khá chắc chắn tôi sẽ bỏ lỡ một nửa số trường hợp đặc biệt, và làm những sai lầm.
Trong số các biểu mẫu này, NFC đến gần nhất để đáp ứng yêu cầu “nó chỉ hiểu các thực thể unicode đơn giản nhất có thể được sử dụng để biểu diễn nó” được hiểu là đề cập đến số điểm mã Unicode nhỏ nhất. Tuy nhiên, NFC cũng ảnh hưởng đến những thứ khác, ví dụ: thay thế các ký tự bằng các quy tắc tương đương của chúng. Để thực hiện * chỉ * phần giảm thiểu, tôi e rằng bạn sẽ phải tự mình lập trình. –