zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    kuangbin 专题一:G题,POJ3087:Shuffle'm Up
    kuangbin专题一:F题,POJ3126:Prime Path
    /*分治典型应用 快速排序*/
    kuangbin专题一 简单搜索 E,POJ 1426 Find The Multiple
    kuangbin专题一:C题,POJ3278:Catch That Cow
    kuangbin专题一B题:POJ2251:Dungeon Master
    kuangbin专题一A题 :POJ1321 :棋盘问题
    1282: ykc想吃好吃的
    2017年ACM第八届山东省赛I题: Parity check(判断 第n项斐波那契数列奇偶性)
    2017年ACM第八届山东省赛J题:company
  • 原文地址:https://www.cnblogs.com/franknihao/p/6541217.html
Copyright © 2011-2022 走看看