unicodedata

如果你經常要處理非英文的拉丁語系語言,或者做搜索相關項目,這真是個好用到哭的python內置庫。我深有感觸。

  1. 形如café這種帶着重音符號的拉丁文詞組,想要當成英文處理,可以用unicodedata庫的unicodedata.normalize('NFKD', 'café'),將重音符號挑出來,然後再去掉特殊符號,從而變成ASCII範圍內的英文。
  2. unicodedata.normalize第一個參數有4個可選項NFC/NFD/NFKC/NFKD,NFC會把重音符合合併到字母上,NFD相反,會拆分出來,NFKC和NFKD同上,但是會做兼容處理。比如符號’μ’會轉成希臘字母’μ’,還有二分之一那個符號(\u00bd),會被轉成1/2。這對於提升搜索體驗很有意義。
  3. unicodedata.name(uchar)可以顯示特殊字符的名稱,也可以用unicodedata.lookup(name)根據名稱找到對應的字符。比如

    1
    2
    
    >>> name(u'\u00bd')
    'VULGAR FRACTION ONE HALF'
    
  4. unicodedata.numeric(uchar)會將內容直接轉成對應的數字,比如,這個函數也能將羅馬數字、中文數字、中文繁體數字、特殊符號數字都轉成標準float類型,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    
    >>> numeric(u'\u00bd')
    0.5
    >>> numeric(u'①')
    1.0
    >>> numeric(u'貮')
    2.0
    >>> numeric(u'三')
    3.0
    
  5. unicodedata.category(uchar)可以區分字符的類型,有以下幾種:

    1
    2
    3
    4
    5
    6
    
    Lu(letter,uppercase):大寫字母。 
    Ll(letter,lowercase):小寫字母。 
    Lt(letter,titlecase):詞首字母大寫的字母。 
    Lm(letter,modifier):修飾符字母字符,它是獨立式的間距字符,指示前面字母的修改。 
    Lo(letter,other):不屬於大寫字母、小寫字母、詞首字母大寫或修飾符字母的字母。 
    Nd(number,decimal digit):十進制數字字符,即範圍 0 到 9 內的字符。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章