我想用python标准化一些unicode文本我想知道是否有一种简单的方法可以在python中获得组合unicode字符的“非规范化”形式例如,如果序列u'o\xaf'(即latin small letter o
后跟combining macron
),则得到(latin small letter o with macron
)。很容易走到另一条路:
o = unicodedata.lookup("LATIN SMALL LETTER O WITH MACRON")
o = unicodedata.normalize('NFD', o)
最佳答案
正如我所评论的,U+00AF不是一个组合宏但是你可以用NFKD转换把它转换成U+0020u+0304。
>>> unicodedata.normalize('NFKD', u'o\u00af')
u'o \u0304'
然后你可以移除空间,然后用NFC得到。
(请注意,nfkd在分解方面相当激进,以至于某些语义可能丢失—任何“兼容的”都将被分离出来。例如
'½'
(U+008D)↦'1'
'⁄'
(U+2044)'2'
;'²'
(U+00B2)'2'
'①'
(U+2460)↦'1'
等)