簡體   English   中英

如何使用Python反轉Unicode分解?

[英]How do I reverse Unicode decomposition using Python?

使用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")
ç

不幸的是,我的文本中似乎實際上有(例如)\\ 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)

我無法真正給你一個明確的答案,因為我從未嘗試過。 但是標准庫中有一個unicodedata模塊 它有兩個函數decomposition()normalize() ,可以幫助你。

編輯:確保它確實是分解的unicode。 有時會有奇怪的方法來編寫無法在編碼中直接表達的字符。 就像"a被人類或某個專門程序精神解析為ä

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM