python 處理帶音符的字符

import sys
import unicodedata
s = 'pýtĥöñ\fis\tawesome\r\n'
remap = {
    ord('\t') : ' ',  #ord() 返回單字符字符串的整數序號
    ord('\f') : ' ',
    ord('\r') : None 
    }
a = s.translate(remap) #空白字符\t 和\f 已經被從新映射到一個空格。回車字符r 直接被刪除
'''

    經過使用dict.fromkeys() 方法構造一個字典,每一個Unicode 和音符做爲鍵,對於的值所有爲None函數

    而後使用unicodedata.normalize() 將原始輸入標準化爲分解形式字符spa

   sys.maxunicode : 給出最大Unicode代碼點的值的整數,即1114111(十六進制的0x10FFFF)。
  
   unicodedata.combining:將分配給字符chr的規範組合類做爲整數返回。 若是未定義組合類,則返回0。
'''
cmb_chrs = dict.fromkeys(c for c in range(sys.maxunicode) if unicodedata.combining(chr(c))) #此部分建議拆分開來理解
b = unicodedata.normalize('NFD', a)
'''
 
    調用translate 函數刪除全部重音符
 
 
'''
b.translate(cmb_chrs)
unicodedata庫中的normalize函數,該函數的第一個參數能夠接受」NFC」,’NFD’,’NFKC’,’NFKD’四個參數中的一個。
NFC(Normalization Form Canonical Composition):以標準等價方式來分解,而後以標準等價重組之。如果singleton的話,重組結果有可能和分解前不一樣。

                         儘量的縮短整個字符串的長度,因此會把’eu0301’2個字節壓縮到一個字節’é’。
NFD(Normalization Form Canonical Decomposition):以標準等價方式來分解
NFKD(Normalization Form Compatibility Decomposition):以相容等價方式來分解
NFKC(Normalization Form Compatibility Composition):以相容等價方式來分解,而後以標準等價重組之。
NFKC和NFKD可能會引發數據損失。
相關文章
相關標籤/搜索