【Python】pypinyin-汉字拼音转换工具

devtools/2025/2/24 3:24:17/

文章目录

  • 1. 主要功能
  • 2. 安装
  • 3. 常用API
    • 3.1 拼音风格
    • 3.2 核心API
      • 3.2.1 pypinyin.pinyin()
      • 3.2.2 pypinyin.lazy_pinyin()
      • 3.2.3 pypinyin.load_single_dict()
      • 3.2.4 pypinyin.load_phrases_dict()
      • 3.2.5 pypinyin.slug()
    • 3.3 注册新的拼音风格
  • 4. 基本用法
    • 4.1 库导入
    • 4.2 基本汉字转拼音
    • 4.3 拼音风格
    • 4.4 多音字
    • 4.5 获取声母和韵母
    • 4.6 自定义拼音库
  • 5. 应用场景

pypinyin 是一个用于将汉字转换为拼音的 Python 库。这个库特别适合需要在程序中进行汉字到拼音转换的场景,比如文本处理、自然语言处理应用等。以下是对 pypinyin 库的介绍,包括其功能和使用方法。

  • Documentation: https://pypinyin.readthedocs.io/
  • GitHub: https://github.com/mozillazg/python-pinyin
  • PyPI: https://pypi.org/project/pypinyin
  • Python version: 2.7, pypy, pypy3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13

1. 主要功能

汉字转拼音:可以将汉字转化为拼音,可以处理多音字。
声调标注:可以在拼音中标注声调。
拼音风格:支持多种拼音风格,比如带声调的拼音、数字表示声调的拼音、以及不带声调的拼音。
多音字支持:能够正确处理和选择多音字的正确读音。
自定义拼音库:用户可以自定义词组的拼音,以适应特定的应用需求。

2. 安装

可以通过pip来安装pypinyin

pip install pypinyin

3. 常用API

3.1 拼音风格

python">class pypinyin.Style(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)
参数值说明
NORMAL普通风格,不带声调。如: 中国 -> zhong guo
TONE标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如: 中国 -> zhōng guó
TONE2声调风格2,即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> zho1ng guo2
TONE3声调风格3,即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> zhong1 guo2
INITIALS声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见 #27)。如: 中国 -> zh g
FIRST_LETTER首字母风格,只返回拼音的首字母部分。如: 中国 -> z g
FINALS韵母风格,只返回各个拼音的韵母部分,不带声调。如: 中国 -> ong uo
FINALS_TONE标准韵母风格,带声调,声调在韵母第一个字母上。如:中国 -> ōng uó
FINALS_TONE2韵母风格2,带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> o1ng uo2
FINALS_TONE3韵母风格3,带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ong1 uo2
BOPOMOFO注音风格,带声调,阴平(第一声)不标。如: 中国 -> ㄓㄨㄥ ㄍㄨㄛˊ
BOPOMOFO_FIRST注音风格,仅首字母。如: 中国 -> ㄓ ㄍ
CYRILLIC汉语拼音与俄语字母对照风格,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> чжун1 го2
CYRILLIC_FIRST汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ч г
WADEGILES威妥玛拼音/韦氏拼音/威式拼音风格,无声调

3.2 核心API

3.2.1 pypinyin.pinyin()

将汉字转换为拼音,返回汉字的拼音列表。

python">pypinyin.pinyin(hans, style=Style.TONE, heteronym=False, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False)
参数说明
hans (unicode 字符串或字符串列表)汉字字符串( ‘你好吗’ )或列表( [‘你好’, ‘吗’] ). 可以使用自己喜爱的分词模块对字符串进行分词处理, 只需将经过分词处理的字符串列表传进来就可以了
style指定拼音风格,默认是 TONE 风格。 更多拼音风格详见 Style
errors指定如何处理没有拼音的字符。‘default’:保留原始字符;‘ignore’:忽略该字符;‘replace’:替换为去掉 \u 的 unicode 编码字符串 (‘\u90aa’ => ‘90aa’);callable对象: 回调函数之类的可调用对象
heteronym是否启用多音字
strict只获取声母或只获取韵母相关拼音风格的返回结果 是否严格遵照《汉语拼音方案》来处理声母和韵母, 详见 strict 参数的影响
v_to_u (bool)无声调相关拼音风格下的结果是否使用 ü 代替原来的 v 当为 False 时结果中将使用 v 表示 ü
neutral_tone_with_five (bool)声调使用数字表示的相关拼音风格下的结果是否 使用 5 标识轻声

3.2.2 pypinyin.lazy_pinyin()

将汉字转换为拼音,返回不包含多音字结果的拼音列表。与 pinyin() 的区别是返回的拼音是个字符串, 并且每个字只包含一个读音。

python">pypinyin.lazy_pinyin(hans, style=Style.NORMAL, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False, tone_sandhi=False)
参数说明
hans (unicode 字符串或字符串列表)汉字字符串( ‘你好吗’ )或列表( [‘你好’, ‘吗’] ). 可以使用自己喜爱的分词模块对字符串进行分词处理, 只需将经过分词处理的字符串列表传进来就可以了。
style指定拼音风格,默认是 NORMAL 风格。 更多拼音风格详见 Style。
errors指定如何处理没有拼音的字符,详情请参考 pinyin()
strict只获取声母或只获取韵母相关拼音风格的返回结果 是否严格遵照《汉语拼音方案》来处理声母和韵母, 详见 strict 参数的影响
v_to_u (bool)无声调相关拼音风格下的结果是否使用 ü 代替原来的 v 当为 False 时结果中将使用 v 表示 ü
neutral_tone_with_five (bool)声调使用数字表示的相关拼音风格下的结果是否 使用 5 标识轻声
tone_sandhi (bool)是否按照声调 变调规则 对拼音进行处理 (使用预先通过分词库进行过分词后的结果作为 hans 参数的值效果会更好,因为变调效果依赖分词效果)

3.2.3 pypinyin.load_single_dict()

载入用户自定义的单字拼音库。

python">pypinyin.load_single_dict(pinyin_dict, style='default')
参数说明
pinyin_dict (dict)单字拼音库。比如: {0x963F: u"ā,ē"}
stylepinyin_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

3.2.4 pypinyin.load_phrases_dict()

载入用户自定义的词语拼音库。

python">pypinyin.load_phrases_dict(phrases_dict, style='default')
参数说明
phrases_dict (dict)词语拼音库。比如: {u"阿爸": [[u"ā"], [u"bà"]]}
stylephrases_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

3.2.5 pypinyin.slug()

将汉字转换为拼音,然后生成 slug 字符串。

python">pypinyin.slug(hans, style=Style.NORMAL, heteronym=False, separator='-', errors='default', strict=True)
参数说明
hans (unicode 字符串或字符串列表)汉字字符串( ‘你好吗’ )或列表( [‘你好’, ‘吗’] ). 可以使用自己喜爱的分词模块对字符串进行分词处理, 只需将经过分词处理的字符串列表传进来就可以了。
style指定拼音风格,默认是 NORMAL 风格。 更多拼音风格详见 Style
heteronym是否启用多音字
separator两个拼音间的分隔符/连接符
errors指定如何处理没有拼音的字符,详情请参考 pinyin()
strict只获取声母或只获取韵母相关拼音风格的返回结果 是否严格遵照《汉语拼音方案》来处理声母和韵母, 详见 strict 参数的影响

3.3 注册新的拼音风格

注册一个拼音风格实现。 自定义的函数应当使用 **kwargs 来兼容后续可能会新增的关键字参数, 当前默认会传递如下参数.

python">pypinyin.style.register(style, func=None)
参数说明
pinyin原始有声调的单个拼音
strict是否开启 strict 模式
han当前拼音对应的原始汉字
python">@register('echo')
def echo(pinyin, **kwargs):return pinyin# or
register('echo', echo)

4. 基本用法

4.1 库导入

python">from pypinyin import pinyin, lazy_pinyin, Style

4.2 基本汉字转拼音

python">print(pinyin('中心'))  # 输出: [['zhōng'], ['xīn']]

4.3 拼音风格

python"># 转换为不带声调的拼音
print(lazy_pinyin('中心'))  # 输出: ['zhong', 'xin']# 显示声调的拼音
print(pinyin('中心', style=Style.TONE))   # 输出: [['zhōng'], ['xīn']]
print(pinyin('中心', style=Style.TONE2))  # 输出: [['zho1ng'], ['xi1n']]
print(pinyin('中心', style=Style.TONE3))  # 输出: [['zhong1'], ['xin1']]
# 可以设置用5表示轻声
print(pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True))  # 输出: [['yi1'], ['shang5']]
# 其他风格
print(pinyin('中心', style=Style.FIRST_LETTER)# 输出: [['z'], ['x']]
print(pinyin('中心', style=Style.CYRILLIC))   # 输出: [['чжун1'], ['синь1']]
print(pinyin('战略', v_to_u=True, style=Style.NORMAL))   # 输出: [['zhan'], ['lüe']]# slug用法
import pypinyin
print(pypinyin.slug('中国人'))  # 输出: 'zhong-guo-ren'
print(pypinyin.slug('中国人', separator=' '))  # 输出: 'zhong guo ren'
print(pypinyin.slug('中国人', style=Style.FIRST_LETTER))  # 输出: 'z-g-r'
print(pypinyin.slug('中国人', style=Style.CYRILLIC))  # 输出: 'чжун1-го2-жэнь2'

4.4 多音字

python"># 支持多音字识别
print(pinyin('重心'))  # 输出: [['zhòng'], ['xīn']] (根据上下文'重'读作'zhòng')
# 启用多音字模式
print(pinyin('中心', heteronym=True)) # 输出:[['zhōng', 'zhòng'], ['xīn']] 

4.5 获取声母和韵母

在 pypinyin 库中,可以使用 Style.INITIALS 和 Style.FINALS 来分别提取汉字拼音的声母和韵母。

python">from pypinyin import pinyin, Style# 提取拼音的声母和韵母
text = '汉字'# 获取声母
initials = pinyin(text, style=Style.INITIALS, strict=False)
print('声母:', initials)  # 输出: [['h'], ['z']]# 获取韵母
finals = pinyin(text, style=Style.FINALS, strict=False)
print('韵母:', finals)  # 输出: [['an'], ['i']]# 获取带声调的韵母
finals_with_tone = pinyin(text, style=Style.FINALS_TONE)
print('带声调的韵母:', finals_with_tone)  # 输出: [['àn'], ['i']]

4.6 自定义拼音库

python"># 自定义词语的拼音
from pypinyin import load_phrases_dict
# 定义自定义词典
custom_dict = {'重庆': [['Chong'], ['qing']]}
# 加载自定义词典
pypinyin.load_phrases_dict(custom_dict)
# 使用自定义词典进行转换
print(pinyin('重庆'))  # 输出: [['Chong'], ['qing']]

5. 应用场景

  • 自然语言处理:文本转换和分析、文本音韵分析或语言学研究;语音识别、语音合成标注数据构建等。
  • 搜索优化:改进中文搜索功能。用户在输入拼音时,可以通过拼音匹配到汉字,实现更为友好和方便的搜索体验。
  • 数据清理与标准化:在数据处理中,将拼音作为汉字索引字段,方便进行数据聚合与分析。
  • 改进拼音输入法:在拼音输入法中,使用多音字的处理功能,将拼音准确转换为正确的汉字,提升输入准确性。

http://www.ppmy.cn/devtools/161279.html

相关文章

深入浅出Java虚拟机(JVM)核心原理

目录 一、JVM概述 1.1 大白话理解JVM 1.2 JVM架构 1.3 跨平台运行的本质 二、类加载器 1.1 类加载全过程 1.1.1 加载阶段 1.1.2 验证阶段 1.1.3 准备阶段 2.2 双亲委派机制 2.3 自定义类加载器 三、运行时数据区 3.1 堆内存结构 3.1.1 新生代参数优化 3.1.2 内存…

手机控制电脑远程关机

远程看看软件兼容iOS和Android设备&#xff0c;该软件除了能通过电脑远程关闭另一台电脑外&#xff0c;您还可以通过它在手机上远程关闭公司的电脑。您可以按照以下步骤进行操作以实现电脑远程关机&#xff1a; 步骤1.在手机应用商店搜索“远程看看”进行软件安装&#xff0c;…

1.24作业

1 pdf_converter ThinkPHP 5.x远程命令执行漏洞分析与复现 - 渗透测试中心 - 博客园 sindex/think%5Capp/invokefunction&functioncall_user_func_array&vars%5B0%5Dsystem&vars%5B1%5D%5B%5Dcat%2Fflag 2 三原色值0-255&#xff08;八位二进制&#xff09;&am…

Asp.Net 前后端分离项目——项目搭建

项目目录 MyDemoProject/ ├── BackendDemo/ # 后端项目目录 │ ├── Controllers/ # 控制器目录&#xff0c;存放 API 控制器 │ │ └── WeatherForecastController.cs │ ├── Models/ # 数据模型目录&#xff08;…

跨中心模型自适应牙齿分割|文献速递-医学影像人工智能进展

Title 题目 Cross-center Model Adaptive Tooth segmentation 跨中心模型自适应牙齿分割 01 文献速递介绍 三维&#xff08;3D&#xff09;口腔内扫描牙齿模型的自动、准确分割是计算机辅助正畸治疗不可或缺的先决条件。具体而言&#xff0c;口腔内扫描&#xff08;IOS&am…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_full_name 函数

ngx_conf_full_name 声明在 src/core/ngx_conf_file.h ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name,ngx_uint_t conf_prefix); 定义在 src\core\ngx_conf_file.c ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name, ngx_uint_t conf_…

华为云ECS命名规则解析与规格选型实战指南

一、华为云ECS命名规则深度解析 华为云服务器ECS实例名称采用标准化编码规则&#xff0c;通过命名即可快速识别实例的关键参数。典型命名格式如下&#xff1a; [实例族][代次].[规格大小].[扩展标识] 以c6.2xlarge.4为例进行分解&#xff1a; 1. 实例族标识&#xff08;首位…

Spring MVC 框架学习笔记:从入门到精通的实战指南

目录 1. Spring MVC 概述 2. Spring MVC 项目搭建 3. Spring MVC 执行流程 4. Spring MVC RequestMapping 注解 5. Spring MVC 获取请求参数 6. Spring MVC 常见注解 7. Spring MVC 响应处理 8. Spring MVC SSM 整合 9. Spring MVC 作用域传参 10. Spring MVC 上传 1…