我想用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'
等)

07-28 00:21