教你使用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中常用的九种预处理方法分享
Sep 11 Python
python 如何快速找出两个电子表中数据的差异
May 26 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
关于Python-faker的函数效果一览
Nov 28 Python
3种python调用其他脚本的方法
Jan 06 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 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读取MySQL数据代码
2008/06/05 PHP
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
javascript常用的方法整理
2015/08/20 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
RequireJs的使用详解
2017/02/19 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
Python编写Windows Service服务程序
2018/01/04 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
python hook监听事件详解
2018/10/25 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
python的pip有什么用
2020/06/17 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
可贵的沉默教学反思
2014/02/06 职场文书
人事部专员岗位职责
2014/03/04 职场文书
电视购物广告词
2014/03/19 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
增员口号大全
2014/06/18 职场文书