教你使用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实现抓取页面上链接的简单爬虫分享
Jan 21 Python
Python lxml模块安装教程
Jun 02 Python
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
用python实现的线程池实例代码
Jan 06 Python
python调用自定义函数的实例操作
Jun 26 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
Python实现SMTP邮件发送
Jun 16 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 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
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
生成二维码方法汇总
2014/12/26 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
python编程线性回归代码示例
2017/12/07 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
python request 模块详细介绍
2020/11/10 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
武汉高蓝德国际.net机试
2016/06/24 面试题
企业党建工作汇报材料
2014/08/19 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
客房部经理岗位职责
2015/02/02 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
植物园观后感
2015/06/11 职场文书
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL