教你使用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性能优化的20条建议
Oct 25 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
python opencv之SIFT算法示例
Feb 24 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
python 计算两个列表的相关系数的实现
Aug 29 Python
Django配置文件代码说明
Dec 04 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
python实现双人五子棋(终端版)
Dec 30 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 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
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
JS中的作用域链
2017/03/01 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
python如何爬取网页中的文字
2020/07/28 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
销售2014年度工作总结
2014/12/08 职场文书
助学感谢信范文
2015/01/21 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫