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
