Python pypinyin注音库轻松丝滑实现汉字转换成拼音

 更新时间:2024年01月22日 09:15:25   作者:晓飞的李 管窥程序  
pypinyin 库,能像功夫熊猫那样,轻松、快捷地帮你把汉字转换成拼音,有了 pypinyin,不仅可以节省宝贵的时间,还可以更准确地展示中文字符的读音,使文化交流更为顺畅,本文带大家一起探索 pypinyin 库的魅力

引言

继续我们的有趣的 Python 库之旅 ——

一个小小的库,或许能避免重复造轮子

一个不显眼的功能,也许能在关键时刻拯救我们

一个出乎意料的方法,或许能激发更多创意灵感

一个独特的技能,也许能成为我们的守护神……

想象一下,你需要把段文字转换成拼音,以便让上小学的孩子能读懂。或者要给一个名单的名字上加上拼音,以便国际友人可以读出。手工转换可能是一件耗时耗力的事情,特别是处理拼音中的音调时。

幸运的是,有一个神器,pypinyin 库,能像功夫熊猫那样,轻松、快捷地帮你把汉字转换成拼音。

有了 pypinyin,不仅可以节省宝贵的时间,还可以更准确地展示中文字符的读音,使文化交流更为顺畅。

现在,让我们一起探索 pypinyin 库的魅力所在吧!

什么是  pypinyin

pypinyin 是一个非常流行的 Python 库,用于将汉字转换为拼音。它可以根据汉字输出对应的拼音,并支持多音字和调式选项。

pypinyin 已经在许多汉语处理项目中被广泛使用,证明了它的实用性和稳定性。它的出现大大简化了处理中文数据的复杂性,提高了开发者工作的效率。

支持  Python 3.x 版本。

虽然还有其他一些库提供类似的功能,例如 jieba 内嵌有拼音转换功能,但 pypinyin 以其专注高效的特点脱颖而出,并且由于它简单易用而获得青睐。

项目地址:https://github.com/mozillazg/python-pinyin 

安装

要开始使用 pypinyin,首先需要将它安装到你的 Python 环境中。最简单的方式是通过 pip 进行安装。打开你的命令行终端,输入以下命令:

pip install pypinyin

这行代码就像施法咒语一样,通过 Python 的包管理器 pip 帮你把 pypinyin 安装好,准备就绪!

基本用法

使用 pypinyin 非常直观,函数调用简单,让我们通过一些示例代码来看看它的基本用法。

首先,我们需要导入库:

from pypinyin import pinyin, lazy_pinyin

以下是如何将一个汉字字符串转换为拼音列表:

hanzi = '汉字转拼音真方便!'
pinyin_list = pinyin(hanzi)
print(pinyin_list)

执行结果:

[['hàn'], ['zì'], ['zhuǎn'], ['pīn'], ['yīn'], ['zhēn'], ['fāng'], ['biàn'], ['!']]

每个汉字的拼音被放在一个小列表里,多音字也能得到正确的拼音。

如果你只需要拼音字符串列表,而不是嵌套列表,可以使用 lazy_pinyin 方法:

pinyin_str_list = lazy_pinyin(hanzi)
print(pinyin_str_list)

执行结果:

['han', 'zi', 'zhuan', 'pin', 'yin', 'zhen', 'fang', 'bian', '!']

多音字处理

对于多音字,pypinyin 还可以根据上下文智能识别正确的读音:

sentence = '重阳节的重,和重量的重,读音不一样。'
for word in pinyin(sentence, heteronym=True):  # heteronym 参数启用多音字模式 
    print(word)

执行结果:

['chóng']
['yáng']
['jié', 'jiē']
['de', 'dī', 'dí', 'dì']
['zhòng', 'chóng', 'tóng']
[',']
['hé', 'hè', 'hú', 'huó', 'huò', 'huo']
['zhòng']
['liàng']
['de', 'dī', 'dí', 'dì']
['zhòng', 'chóng', 'tóng']
[',']
['dú']
['yīn']
['bù']
['yí']
['yàng']
['。']

拼音风格

pypinyin 支持多种风格的拼音呈现,比如 TONAL(带声调的拼音), INITIALS(声母), NORMAL(不带声调的拼音),等等。就像是变化多端的变色龙,以适应你的不同需求。

from pypinyin import Style

pinyin_initials = pinyin('拼音', style=Style.INITIALS, strict=False) # 声母
print(pinyin_initials)

pinyin_normal = pinyin('拼音', style=Style.NORMAL) # 无声调
print(pinyin_normal)

pinyin_tone = pinyin('拼音', style=Style.TONE) # 普通声调
print(pinyin_tone)

pinyin_tone2 = pinyin('拼音', style=Style.TONE2) # 数字声调
print(pinyin_tone2)

执行结果:

[['p'], ['y']]   # 声母
[['pin'], ['yin']]  # 无声调
[['pīn'], ['yīn']]  # 普通声调
[['pi1n'], ['yi1n']]# 数字声调

风格为声母 Style.INITIALS 时,不会显示出 y,因为根据 《汉语拼音方案》 , ywü (yu) 都不是声母,在某些特定韵母无声母时,才加上 y 或 w,而 ü 也有其特定规则。

如果需要显示,就将 strict 设置为 False,如上面例子所示。

定制拼音库

如果你有特殊需求,比如某个汉字转换为特定的拼音,pypinyin 支持定制拼音库。你可以通过提供一个词典来自定义读音。

可以通过自定义词组拼音库或者单字拼音库的方式修正拼音结果

from pypinyin import load_phrases_dict, load_single_dict

load_phrases_dict({'桔子': [['jú'], ['zǐ']]})  # 增加 "桔子" 词组

load_single_dict({ord('还'): 'hái,huán'})  # 调整 "还" 字的拼音顺序或覆盖默认拼音

也可以使用 pypinyin-dict 项目提供的自定义拼音库来纠正结果。

# 使用 phrase-pinyin-data 项目中 cc_cedict.txt 文件中的拼音数据优化结果
from pypinyin_dict.phrase_pinyin_data import cc_cedict
cc_cedict.load()

# 使用 pinyin-data 项目中 kXHC1983.txt 文件中的拼音数据优化结果
from pypinyin_dict.pinyin_data import kxhc1983
kxhc1983.load()

CLI 命令行工具

除了在 Python 代码中使用,pypinyin 还可以作为命令行工具使用:

$ pypinyin 音乐
yīn yuè
$ pypinyin -h

实践

现在,来点儿实践环节将更具有学习效果:

  • 尝试用 pypinyin 将一首中文诗歌转换成拼音。

  • 写一个小工具,比如名字生成器,输入中文名字,自动生成对应的拼音。

请在下列代码片段中补充你的实践内容:

# 将指定的中文诗歌转换为拼音 
poem = '床前明月光,疑是地上霜。'
poem_pinyin = pinyin(poem)
print(poem_pinyin)

# 名字生成器 
def name_to_pinyin(name):
    # 补充代码,返回姓名的拼音 
    return lazy_pinyin(name)

print(name_to_pinyin('张三'))

总结

pypinyin 可以说是处理汉语拼音转换中的老司机了。它不仅提供了多样化的拼音风格,还支持多音字识别和自定义读音等高级功能。

利用 pypinyin,我们可以方便快捷地处理涉及中文转拼音的各类任务,它的应用范围涵盖了自然语言处理、数据清洗、用户输入处理等众多领域。

尽管它不是万能的,但对于大多数拼音转换需求来说,它已然足够强大。借助这个工具,我们可以让中文的魅力跨越语言的界限,让全世界的人更加容易地体验和学习。

以上就是Python pypinyin注音库轻松丝滑实现汉字转换成拼音的详细内容,更多关于Python pypinyin注音库的资料请关注脚本之家其它相关文章!比心!

相关文章

  • pytest自动化测试中的fixture的声明和调用

    pytest自动化测试中的fixture的声明和调用

    这篇文章主要为大家介绍了pytest自动化测试中的fixture的声明和调用,文中含有详细示例操作有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • Python就将所有的英文单词首字母变成大写

    Python就将所有的英文单词首字母变成大写

    这篇文章主要给大家介绍了关于Python就将所有的英文单词首字母变成大写的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python echarts实现数据可视化实例详解

    Python echarts实现数据可视化实例详解

    这篇文章主要为大家详细介绍了Python echarts实现数据可视化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Python中的localtime()方法使用详解

    Python中的localtime()方法使用详解

    这篇文章主要介绍了Python中的localtime()方法使用详解,是Python入门学习的基础知识,需要的朋友可以参考下
    2015-05-05
  • python3.5 tkinter实现页面跳转

    python3.5 tkinter实现页面跳转

    这篇文章主要为大家详细介绍了python3.5 tkinter实现页面跳转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 用Python实现KNN分类算法

    用Python实现KNN分类算法

    这篇文章主要为大家详细介绍了用Python实现KNN分类算法的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python面向对象实现数据分析的实例详解

    Python面向对象实现数据分析的实例详解

    这篇文章主要通过几个实例为大家详细介绍了Python面向对象实现数据分析的方法,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下
    2023-01-01
  • python中pygame针对游戏窗口的显示方法实例分析(附源码)

    python中pygame针对游戏窗口的显示方法实例分析(附源码)

    这篇文章主要介绍了python中pygame针对游戏窗口的显示方法,以完整实例形式较为详细的分析了pygame响应键盘按键改变窗口显示效果的相关实现技巧,需要的朋友可以参考下
    2015-11-11
  • python的setattr函数实例用法

    python的setattr函数实例用法

    在本篇文章里小编给大家整理了一篇关于python的setattr函数实例用法的相关知识点内容,有兴趣的朋友们学习下。
    2020-12-12
  • python切片(获取一个子列表(数组))详解

    python切片(获取一个子列表(数组))详解

    这篇文章主要介绍了python切片(获取一个子列表(数组))详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论