当前位置: 首页 > 科技观察

超简单的Python汉字拼音转换工具

时间:2023-03-22 16:13:56 科技观察

,将汉字转换成拼音,可用于批量注音、文本排序、拼音搜索文本等常见场景。现在网上有很多拼音转换工具,也有很多基于Python的开源模块。今天给大家介绍一个功能最多的模块:pypinyin,它支持以下功能:根据词组智能匹配最正确的拼音。支持和弦字符。简单繁体中文支持,注音支持。支持多种不同的拼音/注音风格。命令行工具一键转换1、开始之前,需要确保你的电脑已经成功安装了Python和pip。如果没有,可以访问这篇文章:超详细的Python安装指南进行安装。(可选1)如果使用Python进行数据分析,可以直接安装Anaconda:Anaconda,Python数据分析和挖掘的好帮手,内置Python和pip。(可选2)另外,推荐大家使用VSCode编辑器,它有很多优点:Python编程的最佳拍档——VSCode详解指南。请选择以下方式之一输入命令安装依赖项:Windows环境打开Cmd(开始-运行-CMD)。MacOS环境打开Terminal(command+空格进入Terminal)。如果你使用的是VSCode编辑器或者Pycharm,可以直接使用界面下方的Terminal.pipinstallpypinyin2。最常见的拼音转换方法如下:pypinyinpinyin,lazy_pinyin,Stylepinyin()(,style=Style.FIRST_LETTER)修改声调输出位置,在对应字母后显示声调,或在拼音末尾显示声调:pypinyinpinyin,lazy_pinyin,Stylepinyin(,style=Style.TONE2,heteronym=)pinyin(,style=Style.TONE3,heteronym=)不考虑多音字:pypinyin拼音,lazy_pinyin,Stylalazy_pinyin()不使用v代替ü:pypinyinpinyin,lazy_pinyin,Stylelazy_pinyin(,v_to_u=)标记软调:pypinyinpinyin,lazy_pinyin,Stylalazy_pinyin(,style=Style.TONE3,neutral_tone_with_five=)使用命令行一键识别拼音:python-mpypinyinMusic3.高级用户自定义拼音显示样式我们可以使用register()满足自定义拼音风格的需要:pypinyinlazy_pinyinpypinyin.styleregister:.format(pinyin)lazy_pinyin(,style=)可以看到通过定义一个kiss函数,使用register装饰器,我们生成了一个新的style,可以直接用于拼音的转换参数,非常方便。另外,所有模块的样式和效果如下:NORMAL=TONE=TONE2=TONE3=INITIALS=FIRST_LETTER=FINALS=FINALS_TONE=FINALS_TONE2=FINALS_TONE3=BOPOMOFO=BOPOMOFO_FIRST=CYRILLIC=CYRILLIC_FIRST=默认处理特殊字符。文本中的特殊字符不会被处理,原样返回:pinyin()但是,如果你想处理这些特殊字符,也是可以的,例如:ignore:忽略这个字符pinyin(,errors=)errors:replacewithremoveUnicodeencodingof\u:pinyin(,errors=)callableobject:提供一个回调函数,接受非拼音字符(字符串)作为参数,支持的返回值类型:unicode或list或None:pinyin('你好☆☆',errors=lambdax:'star')#[['nǐ'],['hǎo'],['star']]pinyin('你好☆☆',errors=lambdax:None)#[['nǐ'],['hǎo']]当返回值类型为list时,自动展开list:pinyin('Hello☆☆',errors=lambdax:['star'for_inx])#[['nǐ'],['hǎo'],['star'],['star']]#指定多音字拼音('Hello☆☆',heteronym=True,errors=lambdax:[['star','☆']for_inx])#[['nǐ'],['hǎo'],['star','☆'],['star','☆']]自定义拼音库如果觉得模块输出效果不对你喜欢,或者想做特殊处理,可以通过load_single_dict()或者load_phrases_dict()通过自定义拼音库修正结果:frompypinyinimportlazy_pinyin,load_phrases_dict,Style,load_single_dictthans='orange'lazy_pinyin(hans,style=Style.TONE2)#['jie2','zi3']load_phrases_dict({'Orange':[['jú'],['zǐ']]})#添加“橙色”短语lazy_pinyin(hans,style=Style.TONE2)#['ju2','zi3']hans='Notyet'lazy_pinyin(hans,style=Style.TONE2)#['hua2n','me2i']load_single_dict({ord('also'):'hái,huán'})#调整“也”的拼音顺序lazy_pinyin('Notyet',style=Style.TONE2)#['ha2i','me2i']