基于Python实现简单的汉字拼音转换工具

目录
  • 1.准备
  • 2.基本使用
  • 3.高级使用

将汉字转为拼音,可以用于批量汉字注音、文字排序、拼音检索文字等常见场景。

现在互联网上有许多拼音转换工具,基于Python的开源模块也不少,今天给大家介绍一个功能特性最多的模块:  pypinyin ,它支持以下特性:

  • 1. 根据词组智能匹配最正确的拼音。
  • 2. 支持多音字。
  • 3. 简单的繁体支持, 注音支持。
  • 4. 支持多种不同拼音/注音风格。
  • 5. 命令行工具一键转化

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点

请选择以下任一种方式输入命令安装依赖

1. Windows 环境 打开 Cmd (开始-运行-CMD)。

2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。

3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install pypinyin

2.基本使用

最普通的拼音转化方法如下:

# Python实用宝典
from pypinyin import pinyin, lazy_pinyin, Style
pinyin('中心')
# [['zhōng'], ['xīn']]

识别多音字:

# Python实用宝典
from pypinyin import pinyin, lazy_pinyin, Style
pinyin('中心', heteronym=True) # 启用多音字模式
# [['zhōng', 'zhòng'], ['xīn']]

设置输出风格,只识别首字母:

# Python实用宝典
from pypinyin import pinyin, lazy_pinyin, Style
pinyin('中心', style=Style.FIRST_LETTER) # 设置拼音风格
# [['z'], ['x']]

修改音调输出位置,在相应字母的后面显示音调,或者拼音的最后显示音调:

# Python实用宝典
from pypinyin import pinyin, lazy_pinyin, Style

# TONE2 在相应字母的后面显示音调
pinyin('中心', style=Style.TONE2, heteronym=True)
# [['zho1ng', 'zho4ng'], ['xi1n']]

# TONE3 拼音的最后显示音调
pinyin('中心', style=Style.TONE3, heteronym=True)
# [['zhong1', 'zhong4'], ['xin1']]

不考虑多音字的情况:

# Python实用宝典
from pypinyin import pinyin, lazy_pinyin, Style
lazy_pinyin('中心') # 不考虑多音字的情况
# ['zhong', 'xin']

不使用v来代替ü:

# Python实用宝典
from pypinyin import pinyin, lazy_pinyin, Style
lazy_pinyin('战略', v_to_u=True) # 不使用 v 表示 ü
# ['zhan', 'lüe']

标记轻声:

# Python实用宝典
from pypinyin import pinyin, lazy_pinyin, Style
# 使用 5 标识轻声
lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)
# ['yi1', 'shang5']

使用命令行一键识别拼音:

# Python实用宝典
python -m pypinyin 音乐
# yīn yuè

3.高级使用

自定义拼音显示风格

我们可以通过 register() 来实现自定义拼音风格的需求:

from pypinyin import lazy_pinyin

from pypinyin.style import register

@register('kiss')
def kiss(pinyin, **kwargs):
    return ' {0}'.format(pinyin)

  
lazy_pinyin('么么', style='kiss')
# [' me', ' me']

可以见到,通过定义一个 kiss 函数,使用 register 装饰器,我们生成了一个新的 style,这个 style 可以直接被用于拼音的转换参数,非常方便。

另外,所有模块自带的 style 及其效果如下:

@unique
class Style(IntEnum):
    """拼音风格"""

    #: 普通风格,不带声调。如:中国 -> ``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

处理特殊字符

默认情况下,对于文字中的特殊字符会不做任何处理,原样返回:

pinyin('你好☆☆')
# [['nǐ'], ['hǎo'], ['☆☆']]

不过如果你想对这些特殊字符做处理也是可以的,比如:

ignore  : 忽略该字符

pinyin('你好☆☆', errors='ignore')
# [['nǐ'], ['hǎo']]

errors : 替换为去掉  \u  的 unicode 编码:

pinyin('你好☆☆', errors='replace')
# [['nǐ'], ['hǎo'], ['26062606']]

callable 对象  : 提供一个回调函数,接受无拼音字符(串)作为参数, 支持的返回值类型:  unicode或 list或 None:

pinyin('你好☆☆', errors=lambda x: 'star')
# [['nǐ'], ['hǎo'], ['star']]

pinyin('你好☆☆', errors=lambda x: None)
# [['nǐ'], ['hǎo']]

返回值类型为 list时,会自动 expend list:

pinyin('你好☆☆', errors=lambda x: ['star' for _ in x])
# [['nǐ'], ['hǎo'], ['star'], ['star']]

# 指定多音字
pinyin('你好☆☆', heteronym=True, errors=lambda x: [['star', '☆'] for _ in x])
# [['nǐ'], ['hǎo'], ['star', '☆'], ['star', '☆']]

自定义拼音库

如果你觉得模块输出效果不合你意,或者你想做特殊处理,可以通过  load_single_dict() 或  load_phrases_dict()  以自定义拼音库的方式修正结果:

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

hans = '还没'
lazy_pinyin(hans, style=Style.TONE2)
# ['hua2n', 'me2i']
load_single_dict({ord('还'): 'hái,huán'}) # 调整 "还" 字的拼音顺序
lazy_pinyin('还没', style=Style.TONE2)
# ['ha2i', 'me2i']

到此这篇关于基于Python实现简单的汉字拼音转换工具的文章就介绍到这了,更多相关Python汉字拼音转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 教你使用Python pypinyin库实现汉字转拼音

    一.前言 这里我先为大家提供一个中文网站,大家可以下去更深入的学习. https://pypi.org/project/pypinyin/ pypinyin库,主要有几下几个特性: 智能匹配最正确的拼音: 支持多音字.繁体字: 支持多种不同拼音.注音风格: 该库属于第三方Python库,因此在使用之前,需要提前安装. pip install pypinyin 然后,导入该库即可. import pypinyin from pypinyin import pinyin 二.pypinyin库的使用

  • python获取一组汉字拼音首字母的方法

    本文实例讲述了python获取一组汉字拼音首字母的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- def multi_get_letter(str_input): if isinstance(str_input, unicode): unicode_str = str_input else: try: unicode_str = str_input.decode('utf8') except: try:

  • python实现将汉字转换成汉语拼音的库

    本文实例讲述了python实现将汉字转换成汉语拼音的库.分享给大家供大家参考.具体分析如下: 下面的这个python库可以很容易的将汉字转换成拼音,其中用到了一个word.data 的字典,可点击此处本站下载. #!/usr/bin/env python # -*- coding:utf-8 -*- __version__ = '0.9' __all__ = ["PinYin"] import os.path class PinYin(object): def __init__(sel

  • 利用python实现汉字转拼音的2种方法

    前言 在浏览博客时,偶然看到了用python将汉字转为拼音的第三方包,但是在实现的过程中发现一些参数已经更新,现在将两种方法记录一下. xpinyin 在一些博客中看到,如果要转化成带音节的拼音,需要传递参数,'show_tone_marks=True',但我在实际使用时发现,已经没有这个参数了,变成了tone_marks,其它的参数和使用方法,一看就明白了,写的很清楚. 看下源码: class Pinyin(object): """translate chinese han

  • Python 返回汉字的汉语拼音

    后来想到自己Delphi有一个获得拼音的代码.于是找了出来.研究了一下代码如下: 复制代码 代码如下: function get_hz_pywb(hzstr: string; pytype: integer): string; var I: Integer; allstr: string; hh: THandle; pp: pointer; ss: TStringList; function retturn_wbpy(tempstr: string; tqtype: integer): stri

  • 基于Python实现简单的汉字拼音转换工具

    目录 1.准备 2.基本使用 3.高级使用 将汉字转为拼音,可以用于批量汉字注音.文字排序.拼音检索文字等常见场景. 现在互联网上有许多拼音转换工具,基于Python的开源模块也不少,今天给大家介绍一个功能特性最多的模块:  pypinyin ,它支持以下特性: 1. 根据词组智能匹配最正确的拼音. 2. 支持多音字. 3. 简单的繁体支持, 注音支持. 4. 支持多种不同拼音/注音风格. 5. 命令行工具一键转化 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,

  • 基于Python制作一个多进制转换工具

    目录 前言 主要步骤 完整代码 前言 学习资料下载链接 提取码:tha8  进制转换计算工具含源文件 主要步骤 导入模块 import tkinter from tkinter import * import tkinter as tk from tkinter.ttk import * 整个框架的主结构 root = Tk() root.title('贱工坊-进制转换计算') # 程序的标题名称 root.geometry("580x400+512+288") # 窗口的大小及页面的

  • 基于Python编写简单实用的日志装饰器

    目录 1.简陋版装饰器 2.普通版装饰器 3.优化版装饰器 在写代码的时候,往往会漏掉日志这个关键因素,导致功能在使用的时候出错却无法溯源. 其实,只需要写一个非常简单的日志装饰器,我们就能大大提升排查问题的效率. 1.简陋版装饰器 写一个装饰器非常简单,因为本质上装饰器就是一个返回函数的“高阶”函数而已: 1) 函数作为参数传递进装饰器. 2) 装饰器内定义一个函数,处理作为参数传递进来的函数. 3) 返回这个装饰器内定义的函数 import datetime def log(func): "

  • PHP实现的汉字拼音转换和公历农历转换类及使用示例

    本文整理了PHP汉字拼音转换和公历农历转换两个功能类文件,非常实用.比如我们查找通讯录可以通过联系人姓名的拼音首字母来查询,可以通过首字母来导航大数据量,可以通过转换拼音来做网站优化等.公农历转化一般用在日历日程安排的项目中,方便农历的节日提醒等等. 1.PHP汉字转拼音 Pinyin.class.php类文件可以将大多数汉字转换成汉语拼音,当然也有个别生僻字不能转换,如果你想转换所有的汉字拼音的话,可能需要再配合一个汉字字库来实现,使用该类文件就基本能满足你的项目需求了.用法: 复制代码 代码

  • 基于Python实现简单的定时器详解

    所谓定时器,是指间隔特定时间执行特定任务的机制.几乎所有的编程语言,都有定时器的实现.比如,Java有util.Timer和util.TimerTask,JavaScript有setInterval和setTimeout,可以实现非常复杂的定时任务处理.然而,牛叉到无所不能的Python,却没有一个像样的定时器,实在令人难以理解. 刚入门的同学一定会说:不是有个time.sleep吗?定好闹钟睡大觉,闹钟一响,起来干活,这不就是一个定时器吗?没错,time.sleep具备定时器的基本要素,但若作

  • 基于Python实现简单的人脸识别系统

    目录 前言 基本原理 代码实现 创建虚拟环境 安装必要的库 前言 最近又多了不少朋友关注,先在这里谢谢大家.关注我的朋友大多数都是大学生,而且我简单看了一下,低年级的大学生居多,大多数都是为了完成课程设计,作为一个过来人,还是希望大家平时能多抽出点时间学习一下,这种临时抱佛脚的策略要少用嗷.今天我们来python实现一个人脸识别系统,主要是借助了dlib这个库,相当于我们直接调用现成的库来进行人脸识别,就省去了之前教程中的数据收集和模型训练的步骤了. B站视频:用300行代码实现人脸识别系统_哔

  • Android开发之拼音转换工具类PinyinUtils示例

    本文实例讲述了Android开发之拼音转换工具类PinyinUtils.分享给大家供大家参考,具体如下: 1.首先下载pinyin4j-2.5.0.jar,拷贝到工程的lib目录里 官网下载地址:https://sourceforge.net/projects/pinyin4j/ 或者点击此处本站下载. 2.创建工具类:PinyinUtils /** * 拼音转换工具 * * @描述 TODO * @项目名称 App_imooc * @包名 com.android.imooc.quickInde

  • 基于Python制作B站视频下载小工具

    目录 1. 原理简介 2. 网页分析 3. 视频爬取 4. 存入本地 5. GUI工具制作 1. 原理简介 原理很简单,就是获取视频资源的源地址,然后爬取视频的二进制内容,再写入到本地即可. 2. 网页分析 打开该网页,然后F12进入开发者模式,接着点开网络—>全部,因为视频资源一般比较大,我这里根据大小进行了从大到小的排序,找到了第一条这些可能和视频源地址有关. 然后,我们复制找到的这条里的url部分不变的部分,回到元素中ctrl+F搜索,找到了可能和视频源地址有关的节点. 果然,我们复制这部

  • 基于Python实现在线二维码生成工具

    目录 1.环境搭建 2.二维码生成功能的封装 3.网页应用的搭建 在今天的教程中,费老师我将为大家展示如何通过纯Python编程的方式,开发出一个网页应用,从而帮助用户直接通过浏览器访问,即可基于输入的网址等文字内容,完成常规二维码.静态底图二维码以及动图底图二维码的快捷生成,先来看一看应用的主要功能操作演示: 只写Python开发这样精致的工具应用非常简单,下面我来带大家从搭建环境开始,学习整个过程: 1.环境搭建 首先我们来创建应用的虚拟开发环境,建议使用Conda,命令如下: 创建虚拟环境

  • Python超简单容易上手的画图工具库(适合新手)

    前言 今天,在网上发现一款很棒的python画图工具库.很简单的api调用就能生成漂亮的图表.并且可以进行一些互动. pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 Echarts 生成的图可视化效果非常棒.废话不多说下来直接看效果(对于我这种没审美感的人来是我觉得挺漂亮的). 使用之前需要安装一下:安装命令很简单:Pip就可以安装: 这里我安装在我的虚拟环境中了:pip install pyecharts . 官方的文档

随机推荐