使用Python 2.5,我有一些文本存储在unicode对象中:
Dinis e Isabel,umadifı'cilrelacóa~oconjugalepolı'tica
这似乎是分解Unicode.Python中是否有通用的方法来反转分解,所以我最终得到:
Dinis e Isabel,umadifícilrelaçãoconclarationepolítica
我想你正在寻找这个:
>>> import unicodedata
>>> print unicodedata.normalize("NFC",u"c\u0327")
ç
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的文本中似乎实际上有(例如)\ u00B8(cedilla)而不是\ u0327(结合cedilla).
呃,讨厌!您仍然可以自动执行此操作,但该过程不会完全无损,因为它涉及兼容性分解(NFKD).
将U + 00B8标准化为NFKD,您将获得一个空格,然后是U + 0327.然后,您可以扫描字符串,查找任何空格跟随组合字符的情况,并删除空格.最后重新组合到NFC,将组合字符放到前一个字符上.
s= unicodedata.normalize('NFKD', s)
s= ''.join(c for i, c in enumerate(s) if c!=' ' or unicodedata.combining(s[i+1])==0)
s= unicodedata.normalize('NFC', s)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |