【Python】 漢字轉化漢語拼音pinyin


pinyin

  pinyin模塊是github上一個小項目,在github.com/cleverdeng/pinyin.py上面可以下到源碼。衷心感謝那些為這個模塊做出貢獻的人來方便我們【鞠躬】

  安裝:

    下載獲得github上的包之后,解壓,在cmd下將工作目錄切換到解壓出來的文件夾里。#python setup.py build,之后就裝好了

  我記得在我第一次用這個模塊之前,我參考了某位前輩的工作,稍微改了一下pinyin的源碼,那篇文章已經找不到了T-T。謝過那位前輩

  源碼第一處改動:改動class PinYin下的hanzi2pinyin方法

#######原來的hanzi2pinyin函數是這樣的##########
    def hanzi2pinyin(self, string=""):
        result = []
        if not isinstance(string, unicode):
            string = string.decode("utf-8")
        
        for char in string:
            key = '%X' % ord(char)
            result.append(self.word_dict.get(key, char).split()[0][:-1].lower())
        return result

#########把它改成這樣##################
    def hanzi2pinyin(self, string=""):
        result = []
        if not isinstance(string, unicode):
            string = string.decode("utf-8")

        for char in string:
            key = '%X' % ord(char)
            if not self.word_dict.get(key):    #加一條判斷,當碰到非漢字的時候原字符保留
                result.append(char)
            else:
                result.append(self.word_dict.get(key, char).split()[0][:-1].lower())

        return result

  第二處改動:class PinYin 下的 hanzi2pinyin_split方法:

############原來函數是這樣的###########
    def hanzi2pinyin_split(self, string="", split=""):
        result = self.hanzi2pinyin(string=string)
        if split == "":
            return result
        else:
            return split.join(result)

###########改過之后的函數############
    def hanzi2pinyin_split(self, string="", split=""):
        result = self.hanzi2pinyin(string=string)
        #if split == "":        #注釋掉這三句,功能是這個函數的split參數為空串的時候也返回一個連在一起的字符串而不是一個列表
        #   return result
        #else:
        return split.join(result)

 

  *pinyin把漢字轉拼音的原理是從一個外部文件,找到相關漢字的拼音表示然后替換原文。這個外部文件在PinYin初始化時由變量的dict_file指定。需要注意的是原文沒有寫絕對路徑,也就是說默認word.data文件是放在和pinyin.py同一個目錄下的。可以自己根據需要修改

 

  用法:

import pinyin

pinyinTransfer = pinyin.PinYin()
pinyinTransfer.load_word()
print pinyinTransfer.hanzi2pinyin("一段中文內容")
>>> yiduanzhongwenneirong

print pinyinTransfer.hanzi2pingyin("一段中文內容",split="|")
>>> yi|duan|zhong|wen|nei|rong

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM