教你使用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 相关文章推荐
在Django中同时使用多个配置文件的方法
Jul 22 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
从DataFrame中提取出Series或DataFrame对象的方法
Nov 10 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
python实现银联支付和支付宝支付接入
May 07 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
Python random模块的使用示例
Oct 10 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
Python+Tkinter制作专属图形化界面
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
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python实现八大排序算法(2)
2017/09/14 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
python日志logging模块使用方法分析
2019/05/23 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
python多线程和多进程关系详解
2020/12/14 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
个人素质的自我评价分享
2013/12/16 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
趣味游戏活动方案
2014/02/07 职场文书
水电工岗位职责
2014/02/12 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
六五普法规划实施方案
2014/03/21 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书