教你使用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判断给定的字符串是否是有效日期的方法
May 13 Python
一篇文章入门Python生态系统(Python新手入门指导)
Dec 11 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
python中set()函数简介及实例解析
Jan 09 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
python中的decimal类型转换实例详解
Jun 26 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
Python中三种花式打印的示例详解
Mar 19 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
留言板翻页的实现详解
2006/10/09 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
php生成略缩图代码
2012/07/16 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
python基础教程之元组操作使用详解
2014/03/25 Python
python中logging包的使用总结
2018/02/28 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
2014年居委会工作总结
2014/12/09 职场文书
大学校园招聘会感想
2015/08/10 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
详解Java实践之适配器模式
2021/06/18 Java/Android