我想在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)
答案 0 :(得分:4)
o = unicodedata.normalize('NFC', o)
答案 1 :(得分:4)
正如我所评论的那样,U + 00AF不是一个组合macron。但您可以使用NFKD转换将其转换为U + 0020 U + 0304。
>>> unicodedata.normalize('NFKD', u'o\u00af')
u'o \u0304'
然后你可以移除空间并通过NFC获得ō。
(请注意,NFKD在分解方面非常积极,某些语义可能会丢失 - 任何“兼容”的东西都会被分离出来。例如
'½'
(U + 008D)↦'1'
'⁄'
(U + 2044)'2'
; '²'
(U + 00B2)↦'2'
'①'
(U + 2460)↦'1'
等)