Python unicodedata
在其标准库中具有模块,该模块允许通过以下unicodedata.normalize()
功能转换Unicode表示形式:
import unicodedata
s1 = 'Spicy Jalape\u00f1o'
s2 = 'Spicy Jalapen\u0303o'
t1 = unicodedata.normalize('NFC', s1)
t2 = unicodedata.normalize('NFC', s2)
print(t1 == t2)
print(ascii(t1))
t3 = unicodedata.normalize('NFD', s1)
t4 = unicodedata.normalize('NFD', s2)
print(t3 == t4)
print(ascii(t3))
使用Python 3.x运行:
$ python3 test.py
True
'Spicy Jalape\xf1o'
True
'Spicy Jalapen\u0303o'
Python不太适合用于第一层衬里,但是如果您不想创建外部脚本,则可以这样做:
$ python3 -c $'import unicodedata\nprint(unicodedata.normalize("NFC", "ääääää"))'
ääääää
对于Python 2.x,您必须添加编码行(# -*- coding: utf-8 -*-
),并使用u字符将字符串标记为Unicode:
$ python -c $'# -*- coding: utf-8 -*-\nimport unicodedata\nprint(unicodedata.normalize("NFC", u"ääääää"))'
ääääää