利用python实现汉字转拼音的2种方法

  

  

在浏览博客时,偶然看到了用python将汉字转为拼音的第三方包,但是在实现的过程中发现一些参数已经更新,现在将两种方法记录一下。

  

  

在一些博客中看到,如果要转化成带音节的拼音,需要传递参数,“<代码> show_tone_marks=True”>   

  

看下源码:

        类拼音(对象):      ”““翻译中国汉字拼音的python,灵感来自flyerhzm   “中国\ _pinyin”_宝石      使用   -----   ::      在在在从xpinyin进口拼音   在在在p=拼音()   在在在#默认分配器是“-”   在在在p.get_pinyin (u”上海”)   “上海”   在在在#显示语气标记   在在在p。get_pinyin (u”上海”,tone_marks=氨曛尽?   “shang-hǎi”   在在在p。get_pinyin (u”上海”,tone_marks=笆帧?   在在在“shang4-hai3”   在在在#删除分配器   在在在p。get_pinyin (u”上海“,”)   “上海”   在在在#分离器设置为空白   在在在p。get_pinyin (u”上海”、“)   “上海”   在在在p.get_initial (u“上”)   “年代”   在在在p.get_initials (u”上海”)   “h”   在在在p。get_initials (u”上海”,u”)   “上海”   在在在p。get_initials (u”上海”,u ' ')   ‘S H’      请输入utf8编码汉字   . ._chinese \ _pinyin: https://github.com/flyerhzm/chinese_pinyin   " " "      

安装:<代码> pip安装xpinyin
  

  

代码:
  

        从xpinyin进口拼音         #实例拼音转换对象   p=拼音()   #进行拼音转换   ret=p。get_pinyin (u“汉语拼音转换”,tone_marks=氨曛尽?   ret1=p。get_pinyin (u“汉语拼音转换”,tone_marks=笆帧?   打印(ret + ' \ n ' + ret1)   #得到转化后的结果   # han-yǔ-pīn-yīn-zhuǎn-huan   # han4-yu3-pin1-yin1-zhuan3-huan4      


  

  

与xpinyin相比,pypinyin更强大。
  

  

安装:pip安装pypinyin
  

  

使用:
  

        进口pypinyin         #不带声调的(风格=pypinyin.NORMAL)   def拼音(词):   s="   因为我在pypinyin。拼音(词,风格=pypinyin.NORMAL):   s +=" . join(我)   返回年代         #带声调的(默认)   def yinjie(词):   s="   # heteronym=True开启多音字   因为我在pypinyin。拼音(词,heteronym=True):   s=s + " . join (i) + "   返回年代         if __name__==癬_main__”:   print(拼音(“忠厚传家久”))   print (yinjie(“诗书继世长”))      

源码:
  

        #?usr/bin/env python   # - * -编码:utf - 8 - *      从__future__进口unicode_literals      从复制进口deepcopy   出现从itertools导入链      从进口text_type pypinyin.compat callable_check   从pypinyin。常量导入(   PHRASES_DICT PINYIN_DICT,   RE_HANS、风格   )   从pypinyin。contrib进口mmseg也   从pypinyin。进口simple_seg跑龙套,_replace_tone2_style_dict_to_default   从pypinyin。进口auto_discover风格,像convert_style转换      auto_discover ()         def赛格(汉斯):   汉斯=simple_seg(汉斯)   ret=[]   x在汉斯:   如果不是RE_HANS.match (x): #没有拼音的字符,不再参与二次分词   ret.append (x)   elif PHRASES_DICT:   ret.extend(列表(mmseg.seg.cut (x)))   其他:#禁用了词语库,不分词   ret.append (x)   返回受潮湿腐烂         def load_single_dict (pinyin_dict、风格=拔ピ肌?:   ”““载入用户自定义的单字拼音库      :param pinyin_dict:单字拼音库比。如:“{0 x963f: u“ā,ē“}”   :param风格:pinyin_dict参数值的拼音库风格。支持‘默认’,‘tone2’   :类型pinyin_dict: dict类型   ”“”   如果风格==皌one2”:   k、v pinyin_dict.items ():   v=_replace_tone2_style_dict_to_default (v)   PINYIN_DICT [k]=v   其他:   PINYIN_DICT.update (pinyin_dict)      mmseg.retrain (mmseg.seg)         def load_phrases_dict (phrases_dict、风格=拔ピ肌?:   ”““载入用户自定义的词语拼音库      :param phrases_dict:词语拼音库比。如:“{u”阿爸”:[[u“ā”],[u“ba”]]} ' '   :param风格:phrases_dict参数值的拼音库风格。支持‘默认’,‘tone2’   :类型phrases_dict: dict类型   ”“”   如果风格==皌one2”:   在phrases_dict.items k值():   v=(   列表(地图(_replace_tone2_style_dict_to_default py))   py的价值   ]   PHRASES_DICT [k]=v   其他:   PHRASES_DICT.update (phrases_dict)      mmseg.retrain (mmseg.seg)         def to_fixed(拼音,风格,严格=True):   ”““根据拼音风格格式化带声调的拼音。      :param拼音:单个拼音   :param风格:拼音风格   :param严格:是否严格遵照《汉语拼音方案》来处理声母和韵母   返回:根据拼音风格格式化后的拼音字符串   :rtype: unicode   ”“”   返回convert_style(拼音,风格=风格,严格=严格,默认=拼音)         def _handle_nopinyin_char(字符、错误=拔ピ肌?:   ”“”处理没有拼音的字符”“   如果callable_check(错误):   返回错误(字符)      如果错误==澳稀?   返回字符   elif错误==昂雎浴?   回来没有   elif错误==叭〈?   如果len(字符)比;1:   返回”。加入(text_type (' % x ' %奥德(x)) x字符)   其他:   返回text_type (“% x ' %奥德(字符))         def handle_nopinyin(字符、错误=稀?heteronym=True):   py=_handle_nopinyin_char(字符、错误=错误)   如果不是py:   返回[]   如果isinstance (py,列表):   #包含多音字信息   如果isinstance (py[0],列表):   如果heteronym:   返回py   # [[a, b], [c, d]]   # [[a], [c]]   返回[[x [0]] x在py)      返回[[我]我在py)   其他:   返回[[py]]         def single_pinyin(汉族、风格、heteronym错误=拔ピ肌?严格=True):   ””“单字拼音转换。      韩:param:单个汉字   :参数错误:指定如何处理没有拼音的字符,详情请参考   py: func:“~ pypinyin.pinyin”   :param严格:是否严格遵照《汉语拼音方案》来处理声母和韵母   返回:返回拼音列表,多音字会有多个拼音项   :rtype:列表   """   num=奥德(汉族)   #处理没有拼音的字符   如果num不在PINYIN_DICT:   返回handle_nopinyin(汉、错误=错误,heteronym=heteronym)      py=PINYIN_DICT (num) .split(" ") #字的拼音列的表   如果不是heteronym:   返回[[to_fixed (py[0],风格,严格严格=)))      #输出多音字的多个读音   #临时存储已存在的拼音,避免多音字拼音转换为非音标风格出现重复。   # TODO:改变使用设置   # TODO:添加测试缓存   py_cached={}   拼音=[]   因为我在py:   py=to_fixed(我,风格,严格=严格)   如果在py_cached py:   继续   py_cached [py]=py   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

利用python实现汉字转拼音的2种方法