Python pypinyin库实现汉字转拼音的全面使用指南

 更新时间:2026年01月18日 10:02:50   作者:不想写代码想哭  
在日常开发中,我们经常会遇到需要将汉字转换为拼音的场景,今天给大家推荐一款功能强大且易用的Python库pypinyin,支持多种拼音风格,下面我们就来看看具体的使用方法吧

在日常开发中,我们经常会遇到需要将汉字转换为拼音的场景,比如生成中文文件名、处理中文检索、制作拼音输入法辅助工具等。今天给大家推荐一款功能强大且易用的Python库——pypinyin,它支持多种拼音风格、多音字处理、自定义拼音库等实用功能,能轻松满足各类汉字转拼音的需求。

一、库的安装

首先,我们需要通过 pip 安装 pypinyin 库,安装命令非常简单:

pip install pypinyin

安装完成后,在代码中导入库即可开始使用:

import pypinyin
from pypinyin import Style

二、核心功能详解

多种拼音风格选择

pypinyin提供了18种拼音风格,覆盖了日常开发和特殊场景的需求,以下是最常用的几种风格示例:

风格常量风格描述示例(输入 "中国")
Style.NORMAL普通风格(无声调)['zhong', 'guo']
Style.TONE标准声调(韵母首字母标调,默认)['zhōng', 'guó']
Style.TONE2韵母后标数字声调['zho1ng', 'guo2']
Style.TONE3拼音后标数字声调['zhong1', 'guo2']
Style.FIRST_LETTER首字母风格['z', 'g']
Style.INITIALS声母风格['zh', 'g']
Style.FINALS韵母风格(无声调)['ong', 'uo']
Style.BOPOMOFO注音风格[' ㄓㄨㄥ ', ' ㄍㄨㄛˊ']

使用示例:

# 标准声调风格(默认)
print(pypinyin.pinyin("中心"))  # 输出:[['zhōng'], ['xīn']]

# 首字母风格
print(pypinyin.pinyin("中心", style=Style.FIRST_LETTER))  # 输出:[['z'], ['x']]

# 拼音后标数字声调
print(pypinyin.pinyin("中心", style=Style.TONE3))  # 输出:[['zhong1'], ['xin1']]

# 无声调普通风格
print(pypinyin.lazy_pinyin("中心", style=Style.NORMAL))  # 输出:['zhong', 'xin']

两个核心转换函数

pypinyin 提供了两个核心转换函数,分别适用于不同场景:

1. pinyin()函数

支持多音字处理,返回嵌套列表(每个汉字的拼音列表),适用于需要保留所有读音的场景。

# 启用多音字模式
print(pypinyin.pinyin("行", heteronym=True))  # 输出:[['háng', 'xíng', 'héng', 'hàng']]

# 多字多音字处理
print(pypinyin.pinyin("银行", heteronym=True))  # 输出:[['yín'], ['háng', 'xíng', 'héng', 'hàng']]

2. lazy_pinyin()函数

不返回多音字,每个汉字只保留一个读音,返回普通列表,适用于无需多音字的简单场景,效率更高。

# 基础使用
print(pypinyin.lazy_pinyin("中心"))  # 输出:['zhong', 'xin']

# 带声调的 lazy 模式
print(pypinyin.lazy_pinyin("中心", style=Style.TONE))  # 输出:['zhōng', 'xīn']

# 声调变调处理(如"你好"的"好"变调)
print(pypinyin.lazy_pinyin("你好", style=Style.TONE2, tone_sandhi=True))  # 输出:['ni2', 'ha3o']

特殊参数使用

1. 处理没有拼音的字符

通过 errors 参数指定对无拼音字符的处理方式:

# 保留原始字符(默认)
print(pypinyin.lazy_pinyin("中国abc123"))  # 输出:['zhong', 'guo', 'a', 'b', 'c', '1', '2', '3']

# 忽略无拼音字符
print(pypinyin.lazy_pinyin("中国abc123", errors="ignore"))  # 输出:['zhong', 'guo']

# 替换为 unicode 编码(去掉\u)
print(pypinyin.lazy_pinyin("中国✨123", errors="replace"))  # 输出:['zhong', 'guo', '2728', '1', '2', '3']

2. ü和v的转换

在无声调风格下,默认用v表示ü,可通过v_to_u参数改为ü

# 默认用 v 表示 ü
print(pypinyin.lazy_pinyin("战略"))  # 输出:['zhan', 'lve']

# 用 ü 代替 v
print(pypinyin.lazy_pinyin("战略", v_to_u=True))  # 输出:['zhan', 'lüe']

3. 轻声标识

通过 neutral_tone_with_five 参数用数字 5 标识轻声:

# 轻声用 5 标识
print(pypinyin.lazy_pinyin("衣裳", style=Style.TONE3, neutral_tone_with_five=True))  # 输出:['yi1', 'shang5']

生成Slug字符串

slug()函数可以将汉字转换为拼音拼接字符串,适用于URL路径、文件名等场景:

# 默认分隔符 "-"
print(pypinyin.slug("中国人"))  # 输出:'zhong-guo-ren'

# 自定义分隔符为空格
print(pypinyin.slug("中国人", separator=" "))  # 输出:'zhong guo ren'

# 首字母拼接
print(pypinyin.slug("中国人", style=Style.FIRST_LETTER, separator=""))  # 输出:'zgr'

# 俄语字母风格
print(pypinyin.slug("中国人", style=Style.CYRILLIC))  # 输出:'чжун1-го2-жэнь2'

自定义拼音库

如果默认的拼音库不符合需求(比如生僻字、特殊读音),可以通过以下函数自定义拼音:

1. 自定义单字拼音

# 自定义单字拼音库:{汉字Unicode编码: 拼音字符串}
custom_single = {0x82f1: "yīng"}  # 0x82f1 是"英"的 Unicode 编码
pypinyin.load_single_dict(custom_single)

print(pypinyin.lazy_pinyin("英"))  # 输出:['yīng']

2. 自定义词语拼音

# 自定义词语拼音库:{词语: [[字1拼音], [字2拼音]]}
custom_phrases = {"阿爸": [["ā"], ["bà"]]}
pypinyin.load_phrases_dict(custom_phrases)

print(pypinyin.pinyin("阿爸"))  # 输出:[['ā'], ['bà']]

注册自定义拼音风格

如果内置风格不够用,可以通过register()函数注册自定义风格:

from pypinyin.style import register

# 注册自定义风格:返回拼音大写形式
@register("upper")
def upper_style(pinyin, **kwargs):
    return pinyin.upper()

# 使用自定义风格
print(pypinyin.lazy_pinyin("中心", style="upper"))  # 输出:['ZHONG', 'XIN']

# 带声调的大写风格
print(pypinyin.lazy_pinyin("中心", style="upper", style=Style.TONE))  # 输出:['ZHŌNG', 'XĪN']

三、常见问题与注意事项

  • 编码问题:确保输入的字符串是Unicode格式(Python 3 中默认是Unicode,无需额外处理)。
  • 多音字处理:默认不启用多音字,需要手动设置heteronym=True
  • 生僻字支持:默认拼音库覆盖常用汉字,生僻字可通过自定义拼音库补充。
  • strict 参数:涉及声母 / 韵母的风格时,strict=True会严格遵循《汉语拼音方案》,False 则更灵活。

四、应用场景总结

  • 中文文本处理:拼音检索、排序、分词辅助。
  • 文件名/URL 生成:使用slug ()函数生成友好的文件名或路径。
  • 教育类应用:拼音标注、注音转换。
  • 特殊场景:盲文转换、俄语字母对照、威妥玛拼音转换等。

五、总结

pypinyin是一款功能全面、易用性强的汉字转拼音库,支持多种拼音风格、多音字处理、自定义拼音库等核心功能,覆盖了从简单到复杂的各类应用场景。无论是日常开发还是特殊需求,都能通过它快速实现汉字转拼音的功能。

到此这篇关于Python pypinyin库实现汉字转拼音的全面使用指南的文章就介绍到这了,更多相关Python pypinyin汉字转拼音内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python数据类型之列表和元组的方法实例详解

    Python数据类型之列表和元组的方法实例详解

    这篇文章主要介绍了Python数据类型之列表和元组的相关知识,列表是一组有序项目的集合 ,可变的数据类型可 进行增删改查,本文通过实例文字相结合的形式给大家介绍的非常详细 ,需要的朋友可以参考下
    2019-07-07
  • python赋值操作方法分享

    python赋值操作方法分享

    python的赋值操作有几种类型,下面我们分别给大家说下,需要的朋友可以参考下
    2013-03-03
  • python实现字符串和日期相互转换的方法

    python实现字符串和日期相互转换的方法

    这篇文章主要介绍了python实现字符串和日期相互转换的方法,涉及Python中time和datetime函数使用技巧,需要的朋友可以参考下
    2015-05-05
  • Python使用pandas导入xlsx格式的excel文件内容操作代码

    Python使用pandas导入xlsx格式的excel文件内容操作代码

    这篇文章主要介绍了Python使用pandas导入xlsx格式的excel文件内容,基本导入是在Python中使用pandas导入.xlsx文件的方法是read_excel(),本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • win10系统中安装scrapy-1.1

    win10系统中安装scrapy-1.1

    在win10的环境下安装scrapy,并不能直接按照官网的手册(http://doc.scrapy.org/en/1.0/intro/install.html)一次性安装成功,根据我自己的安装过程中遇到的问题,特意整理了一下安装过程
    2016-07-07
  • 关于Python包导入报错的问题总结

    关于Python包导入报错的问题总结

    这篇文章主要介绍了关于Python包导入报错的问题总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python制作花瓣网美女图片爬虫

    python制作花瓣网美女图片爬虫

    本文通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地,需要的朋友可以参考下
    2015-10-10
  • Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器

    Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器

    这篇文章主要介绍了Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器,需要的朋友可以参考下
    2014-06-06
  • springboot整合单机缓存ehcache的实现

    springboot整合单机缓存ehcache的实现

    本文主要介绍了springboot整合单机缓存ehcache的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python 实现人和电脑猜拳的示例代码

    python 实现人和电脑猜拳的示例代码

    这篇文章主要介绍了python 实现人和电脑猜拳的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论