python-pinyin库是一个汉字拼音转换工具,其主要功能有:

  • 根据词组智能匹配最正确的拼音。
  • 支持多音字。
  • 简单的繁体支持, 注音支持。
  • 支持多种不同拼音风格。

安装命令为:pip install pypinyin
加粗样式
官方仓库为:python-pinyin

官方中文文档为:pypinyin文档

文章目录

  • 1 api使用
    • 1.1 pypinyin.pinyin
    • 1.2 pypinyin.lazy_pinyin
    • 1.3 load_single_dict和load_phrases_dict
    • 1.4 pypinyin.slug
    • 1.5 pypinyin.style.register
  • 2 参考

1 api使用

1.1 pypinyin.pinyin

pypinyin的常用函数为pinyin,即将汉字转换为拼音,返回汉字的拼音列表。

pypinyin.pinyin(hans, style=Style.TONE, heteronym=False, errors=‘default’, strict=True, v_to_u=False, neutral_tone_with_five=False)

pinyin的参数介绍如下:

参数
hans:(unicode 字符串或字符串列表) – 汉字字符串( '你好吗' )或列表( ['你好', '吗'] )。style:指定拼音风格,默认是 TONE(标注拼音) 风格。 errors:指定如何处理没有拼音的字符。heteronym: 是否启用多音字。strict :只获取声母或只获取韵母相关拼音风格的返回结果时,是否严格遵照《汉语拼音方案》来处理声母和韵母。v_to_u (bool):无声调相关拼音风格下的结果是否使用 ü 代替原来的 v ,当为False时结果中将使用 v 表示 ü。neutral_tone_with_five (bool):声调风格下是否用5表示轻声。返回:拼音列表。返回类型:list。

拼音风格style的可选参数列表如下:

#: 普通风格,不带声调。如: 中国 -> ``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
#: 威妥玛拼音/韦氏拼音/威式拼音风格,无声调
WADEGILES = 14

errors处理方式如下:

'default': 保留原始字符'ignore': 忽略该字符'replace': 替换为去掉 \u 的 unicode 编码字符串 ('\u90aa' => '90aa')callable对象: 回调函数之类的可调用对象。

具体函数和参数使用如下:

基础使用

from pypinyin import pinyin
result = pinyin('中心')
print(type(result))
print(result)
result = pinyin('中毒')
print(result)
<class 'list'>
[['zhōng'], ['xīn']]
[['zhòng'], ['dú']]

启用多音字模式

result = pinyin('中心', heteronym=True)
print(result)
result = pinyin('中毒', heteronym=True)
print(result)
[['zhōng', 'zhòng'], ['xīn']]
[['zhòng'], ['dú']]

设置拼音风格

from pypinyin import pinyin, Style
result = pinyin('中心', style=Style.INITIALS) # 声母风格
print(result)
result = pinyin('中心', style=Style.FIRST_LETTER) # 首字母风格
print(result)
result = pinyin('中心', style=5) # 韵母风格
print(result)
[['zh'], ['x']]
[['z'], ['x']]
[['ong'], ['in']]

v_to_u

# 使用 ü 代替原来的 v
result = pinyin('战略', v_to_u=True, style=Style.NORMAL)
print(result)
result = pinyin('战略', v_to_u=False, style=Style.NORMAL)
print(result)
[['zhan'], ['lüe']]
[['zhan'], ['lve']]

neutral_tone_with_five

# 声调风格下是否用5表示轻声
result = pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)
print(result)
result = pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=False)
print(result)
[['yi1'], ['shang5']]
[['yi1'], ['shang']]

处理不包含拼音的字符

根据errors 参数的值做相应的处理即可。

# default (默认行为): 不做任何处理,原样返回:
result = pinyin('中心center')
print(result)
[['zhōng'], ['xīn'], ['center']]
# ignore : 忽略该字符
result = pinyin('中心center', errors='ignore')
print(result)
[['zhōng'], ['xīn']]
# replace : 替换为去掉 \u 的 unicode 编码:
result = pinyin('中心center', errors='replace')
print(result)
[['zhōng'], ['xīn'], ['63656e746572']]
# callable 对象 : 提供一个回调函数,接受无拼音字符(串)作为参数, 支持的返回值类型: unicode 或 list 或 None 。
result =pinyin('中心center', errors=lambda x: 'other')
print(result)
[['zhōng'], ['xīn'], ['other']]

strict参数的影响

strict 参数用于控制处理声母和韵母时是否严格遵循 《汉语拼音方案》 标准

result = pinyin('迂', style=Style.FINALS_TONE,strict=False)
print(result)
result = pinyin('迂', style=Style.FINALS_TONE,strict=True)
print(result)
[['ū']]
[['ǖ']]

1.2 pypinyin.lazy_pinyin

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

pypinyin.lazy_pinyin(hans, style=Style.NORMAL, errors=‘default’, strict=True, v_to_u=False, neutral_tone_with_five=False, tone_sandhi=False)

lazy_pinyin与pinyin大部分参数是一样的,除了tone_sandhi。tone_sandhi表示是否按照声调变调规则对拼音进行处理。

示例

# 注意返回的是读音字符串
from pypinyin import lazy_pinyin, Style
result = lazy_pinyin('中心')
print(result)
result = lazy_pinyin('中毒')
print(result)
['zhong', 'xin']
['zhong', 'du']
# 是否按照声调变调规则对拼音进行处理
result = lazy_pinyin('你好', style=Style.TONE2, tone_sandhi=True)
print(result)
result = lazy_pinyin('你好', style=Style.TONE2, tone_sandhi=False)
print(result)
['ni2', 'ha3o']
['ni3', 'ha3o']

1.3 load_single_dict和load_phrases_dict

pypinyin.load_single_dict用于载入用户自定义的单字拼音库。

pypinyin.load_single_dict(pinyin_dict, style=‘default’)

pypinyin.load_single_dict的参数介绍如下:

pinyin_dict (dict) – 单字拼音库。比如: {0x963F: u"ā,ē"}
style – pinyin_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

pypinyin.load_phrases_dict用于载入用户自定义的词语拼音库。

pypinyin.load_phrases_dict(phrases_dict, style=‘default’)

pypinyin.load_phrases_dict的参数介绍如下:

phrases_dict (dict) – 词语拼音库。比如: {u"阿爸": [[u"ā"], [u"bà"]]}
style – phrases_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

具体函数和参数使用如下:

增加单字

from pypinyin import lazy_pinyin, load_phrases_dict, Style, load_single_dict
hans = '还没'
result = lazy_pinyin(hans, style=Style.TONE3)
print(result)
load_single_dict({ord('还'): 'huán, hái'})  # 调整 "还" 字的拼音顺序或覆盖默认拼音
result = lazy_pinyin('还没', style=Style.TONE3)
print(result)
['hai2', 'mei2']
['huan2', 'mei2']

增加词组

from pypinyin import lazy_pinyin, load_phrases_dict, Style, load_single_dicthans = '桔子'
result = lazy_pinyin(hans, style=Style.TONE2)
print(result)
load_phrases_dict({'桔子': [['jú'], ['zǐ']]})  # 增加 "桔子" 词组
result = lazy_pinyin(hans, style=Style.TONE2)
print(result)
['ju2', 'zi']
['ju2', 'zi3']

pypinyin-dict

使用pypinyin-dict项目提供的自定义拼音库可以纠正结果。但是需要安装该自定义拼音库。

pip install pypinyin-dict

示例

from pypinyin import pinyin
result = pinyin('中心',heteronym=True)
print(result)# 使用 phrase-pinyin-data 项目中 cc_cedict.txt 文件中的拼音数据优化结果
from pypinyin_dict.phrase_pinyin_data import cc_cedict
cc_cedict.load()result = pinyin('中心',heteronym=True)
print(result)
[['zhōng', 'zhòng'], ['xīn']]
[['zhōng'], ['xīn']]
from pypinyin import pinyinresult = pinyin('扔', heteronym=True)
print(result)# 使用 pinyin-data 项目中 cc_cedict.txt 文件中的拼音数据优化结果
from pypinyin_dict.pinyin_data import kxhc1983
kxhc1983.load()result = pinyin('扔', heteronym=True)
print(result)
[['rēng', 'rèng']]
[['rēng']]

1.4 pypinyin.slug

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

pypinyin.slug(hans, style=Style.NORMAL, heteronym=False, separator=‘-’, errors=‘default’, strict=True)

pypinyin.slug的参数介绍如下:

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

示例

import pypinyin
from pypinyin import Style
result = pypinyin.slug('你我他')
print(result)
print(type(result))result = pypinyin.slug('你我他', separator='|')
print(result)result = pypinyin.slug('你我他', style=Style.FIRST_LETTER)
print(result)
ni-wo-ta
<class 'str'>
ni|wo|ta
n-w-t

1.5 pypinyin.style.register

pypinyin.style.register用于注册一个拼音风格实现。示例注册方式如下:

@register('echo')
def echo(pinyin, **kwargs):return pinyin# or
register('echo', echo)

具体使用看示例代码理解:

from pypinyin import lazy_pinyin
from pypinyin.style import register@register('kiss')
def kiss(pinyin, **kwargs):return '												

[python] ​python-pinyin库相关推荐

  1. python拼音怎么写-Python 中拼音库 PyPinyin 的用法

    [摘要] 最近碰到了一个问题,项目中很多文件都是接手过来的中文命名的一些素材,结果在部署的时候文件名全都乱码了,导致项目无法正常运行. 后来请教了一位大佬怎么解决文件名乱码的问题,他说这个需要正面解决 ...

  2. Python 中拼音库 PyPinyin 的用法,没错见名知意它就是用来翻译汉字的

    最近碰到了一个问题,项目中很多文件都是接手过来的中文命名的一些素材,结果在部署的时候文件名全都乱码了,导致项目无法正常运行. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基 ...

  3. Python 中拼音库 PyPinyin 的用法

    [摘要] 最近碰到了一个问题,项目中很多文件都是接手过来的中文命名的一些素材,结果在部署的时候文件名全都乱码了,导致项目无法正常运行. 后来请教了一位大佬怎么解决文件名乱码的问题,他说这个需要正面解决 ...

  4. 【Python】pinyin模块将中文转为拼音

    [Python]pinyin模块将中文转为拼音 示例代码 示例代码 可以看到数据不是很规范,城市名称既有中文又有英文,而且上海被存储为ShangHai和Shanghai. 对于上海的问题,我们将拼音全 ...

  5. python怎么用拼音-Python利用拼音库PyPinyin获取汉字的拼音

    我们可以利用python的PyPinyin库来获取汉字的拼音,我们先来写一个简单的案例import pypinyin print(pypinyin.pinyin( "小宁博客")) ...

  6. python内置库之学习ctypes库(二)

    ctypes库踩坑日记2 一.自己实现一个dll文件,再用python的ctypes库调用思路1更清晰 二.生成dll文件 三.ctypes库调用 一.自己实现一个dll文件,再用python的cty ...

  7. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  8. python 脚本撞库国内“某榴”账号

    其实日常生活中我们的用户名和密码就那么几个,所以这给撞库带来了可能,本文主要给出python脚本撞库的一点粗浅代码.这里只讨论技术本生,代码中某榴的地址也已经改掉,避免被管理员误解禁言等发生,谢谢大家 ...

  9. Python中lxml库的安装(Windows平台)

    之前写过<Python中requests包的安装>,今天我需要安装lxml库,这里我尝试之前安装requests方式,但是没有成功,几经周折,终于总结出来了一个方法,这里拿出来给大家分享. ...

  10. 第四章 python的turtle库的运用

    我们可以尝试用python的自带turtle库绘制一条蟒蛇 首先我们设计一下蟒蛇的基本形状 我们先把这段蟒蛇绘制的实例代码贴出来,各位可以在自己的本地运行一下看看效果,然后我们再继续分析代码: 1 # ...

最新文章

  1. 元宇宙和我有什么关系?
  2. LoRDEC:hybrid correction of long reads 长读的混合校正
  3. JVM中线程是否可以并行执行
  4. Sublime Text 3添加右键
  5. 如何在Go中实现Elasticsearch
  6. Ubuntu18.04 安装OpenCV
  7. 清除html宏病毒,宏病毒怎么清除
  8. 基于arduino ws2812b简单的渐变代码
  9. 蒙古文输入法linux版,蒙古文输入法下载 德力海蒙古文输入法 V2.1.3 官方安装版(附使用手册) 下载-脚本之家...
  10. lob移表空间 oracle_关于oracle带lob对象的分区表,移动表空间的问题
  11. 最新版苹果开发者账号注册续费流程 Apple Developer
  12. 另辟蹊径--极简Swifty路由
  13. Netty从使用到源码7_粘包半包协议与实战项目
  14. 历史类:古希腊与亚历山大帝国
  15. STM8应用笔记STM8开发环境
  16. SpringCache之@CacheEvict注解的使用说明
  17. 【SwiftUI模块】0033、SwiftUI创建用户双击帖子时的心形动画
  18. TensorFlow 线性代数编译框架 XLA
  19. 点餐微信小程序【源码好又多】
  20. Java语言基础-面向对象编程三步走之打开冰箱门

热门文章

  1. 滴滴云千万补贴,助力中小企业数字化转型
  2. 【Linux】SWAP 深度解读(必须收藏)
  3. 在虚拟机上使用Ghost备份/恢复操作系统
  4. 编程求一个9位的整数,数字由1-9构成,每个数字只能出现一次。并且这个整数的前一位能被1整除,前两位能被2整除, ......以此类推,前九位能被9整除。
  5. 不变初心数 (15 分)
  6. Python代码写好了怎么运行?为大家详细讲讲如何运行Python代码
  7. HTML网页下,在div标签中嵌套其他html页面
  8. Windows HPC Server 2008 R2 下载
  9. 融资融券通俗易懂的解释
  10. 高德地图的circle圈