教你使用Python pypinyin库实现汉字转拼音


Posted in Python onMay 27, 2021

一、前言

这里我先为大家提供一个中文网站,大家可以下去更深入的学习。

https://pypi.org/project/pypinyin/

pypinyin库,主要有几下几个特性:

  • 智能匹配最正确的拼音;
  • 支持多音字、繁体字;
  • 支持多种不同拼音、注音风格;

该库属于第三方Python库,因此在使用之前,需要提前安装。

pip install pypinyin

然后,导入该库即可。

import pypinyin
from pypinyin import pinyin

二、pypinyin库的使用

先来看一个最基本的例子。

from pypinyin import pinyin
pinyin("吃饭")

结果如下:

教你使用Python pypinyin库实现汉字转拼音

有些字,可能是多音字,再看下面这个例子。

from pypinyin import pinyin
pinyin('冯',heteronym=True)
pinyin('朝',heteronym=True)
pinyin('同',heteronym=True)

结果如下:

教你使用Python pypinyin库实现汉字转拼音

仔细观察上述打印结果,生成的都是二维列表嵌套,这样解析起来,真费劲!

能不能生成一维列表呢?

from pypinyin import lazy_pinyin
lazy_pinyin("数据分析与统计学之美")

结果如下:

教你使用Python pypinyin库实现汉字转拼音

问题又来了!

这里虽然是一维列表,但是没有声调了,这不尴尬了吗?

这里面就涉及到一个风格转换的问题了。

from pypinyin import lazy_pinyin,Style
lazy_pinyin("数据分析与统计学之美",style=Style.TONE)

结果如下:

教你使用Python pypinyin库实现汉字转拼音

原来这里有一个Style类,供我们选择风格,常用的风格有下面这14种。

#: 普通风格,不带声调。如: 中国 -> ``zhong guo``
NORMAL  =  0

#: 标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如: 中国 -> ``zhōng guó``
TONE  =  1

#: 声调风格2,即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> ``zho1ng guo2``
TONE2  =  2

#: 声调风格3,即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ``zhong1 guo2``
TONE3  =  8

#: 声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见 `#27`_)。如: 中国 -> ``zh g``
INITIALS  =  3

#: 首字母风格,只返回拼音的首字母部分。如: 中国 -> ``z g``
FIRST_LETTER  =  4

#: 韵母风格,只返回各个拼音的韵母部分,不带声调。如: 中国 -> ``ong uo``
FINALS  =  5

#: 标准韵母风格,带声调,声调在韵母第一个字母上。如:中国 -> ``ōng uó``
FINALS_TONE  =  6

#: 韵母风格2,带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> ``o1ng uo2``
FINALS_TONE2  =  7

#: 韵母风格3,带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ``ong1 uo2``
FINALS_TONE3  =  9

#: 注音风格,带声调,阴平(第一声)不标。如: 中国 -> ``ㄓㄨㄥ ㄍㄨㄛ?``
BOPOMOFO  =  10

#: 注音风格,仅首字母。如: 中国 -> ``ㄓ ㄍ``
BOPOMOFO_FIRST  =  11

#: 汉语拼音与俄语字母对照风格,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ``чжун1 го2``
CYRILLIC  =  12

#: 汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ``ч г``
CYRILLIC_FIRST  =  13

如果你的文字中,除了汉字,还有其它符号以及英文,会打印出怎么样的效果呢?

from pypinyin import lazy_pinyin
lazy_pinyin('Hello,我是?',style=Style.TONE)

结果如下:

教你使用Python pypinyin库实现汉字转拼音

汉字打印出来就行,英文、表情符号不用打印出来最好,应该怎么办呢?

这里有一个errors参数呢,来看看例子。

from pypinyin import lazy_pinyin

lazy_pinyin('Hello,我是?',style=Style.TONE,errors='ignore')

结果如下:

教你使用Python pypinyin库实现汉字转拼音

如果你对pypinyin库的返回结果不满意,可以自定义一个库呀!这里可以使用load_phrases_dict 方法。

我们先来看一个例子:

from pypinyin import lazy_pinyin

lazy_pinyin("黄同学",style=Style.TONE)

结果如下:

教你使用Python pypinyin库实现汉字转拼音

“黄同学” 的同,明明是二声,这里成了四声。

from pypinyin import lazy_pinyin,  load_phrases_dict

personalized_dict = {'黄同学':  [['huáng'], ['tòng'], ['xué']]}

load_phrases_dict(personalized_dict)

lazy_pinyin("黄同学",style=Style.TONE)

结果如下:

教你使用Python pypinyin库实现汉字转拼音

到此这篇关于教你使用Python pypinyin库实现汉字转拼音的文章就介绍到这了,更多相关Python pypinyin库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
如何将python中的List转化成dictionary
Aug 15 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
Python基础教程之异常详解
Jan 10 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
python带参数打包exe及调用方式
Dec 21 Python
PyTorch中permute的用法详解
Dec 30 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
如何利用python和DOS获取wifi密码
Mar 31 Python
OpenCV实现常见的四种图像几何变换
Apr 01 Python
基于tensorflow权重文件的解读
May 26 #Python
解决Python字典查找报Keyerror的问题
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
tensorflow中的数据类型dtype用法说明
May 26 #Python
详解Python魔法方法之描述符类
May 26 #Python
使用tensorflow 实现反向传播求导
python基础学习之递归函数知识总结
You might like
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
JavaScript事件列表解说
2006/12/22 Javascript
从javascript语言本身谈项目实战
2006/12/27 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
python3的输入方式及多组输入方法
2018/10/17 Python
详解python pandas 分组统计的方法
2019/07/30 Python
python如何将多个PDF进行合并
2019/08/13 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
优秀员工获奖感言
2014/03/01 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
法院个人总结
2015/03/03 职场文书
校长一岗双责责任书
2015/05/09 职场文书
任长霞观后感
2015/06/16 职场文书
电视新闻稿
2015/07/17 职场文书