当前位置: 首页 > article >正文

使用Python,pypinyin将汉字转为带音调,首字母等多种风格的拼音,自动学习生字词

使用Python,pypinyin将汉字转为带音调,首字母等多种风格的拼音,自动学习生字词

  • 1. 效果图
  • 2. 安装及支持的音调分类
  • 3. 源码
    • 参考

这篇博客将介绍如何使用Python,pypinyin将汉字转为带音调的拼音,自动学习生字词,现在微读有个Ai文书,实现了这个功能,但是每次都要查询完还得标记下把拼音带音调打出来,有点费劲。怎么自动根据生字来查询到它对应的拼音呢?

pypinyin可以实现。

1. 效果图

原始数组里的汉字及转换标准声调拼音后结果如下:
在这里插入图片描述

单个字转换各种风格的声调后拼音如下:
在这里插入图片描述
在这里插入图片描述

2. 安装及支持的音调分类

  • 安装pypinyin
pip install pypinyin
  • 看源码constants.py可以看到其支持的全量声调分类:

    1. Style.NORMAL是标准拼音无声调
    2. Style.TONE是标准带声调
    3. Style.TONE2是拼音声调在各个韵母之后
    4. Style.TONE3是拼音声调在各个拼音之后
    5. Style.INITIALS是拼音只返回首字母等等,其他的含义可以看下图
      在这里插入图片描述

    constants.py源码如下: 在这里插入图片描述

3. 源码

'''
hz2pinyin.py
汉字转拼音带声调
'''
from pypinyin import pinyin, Style


def to_pinyin_with_tone(text, style=Style.TONE):
    '''汉字转换为拼音,默认为标准带音调
    """拼音风格"""
    #: 普通风格,不带声调。如: 中国 -> ``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
    '''
    return ' '.join([item[0] for item in pinyin(text, style=style)])


def processs_hz2pinyin():
    data_list = ['隰', '漉', '籊', '滺', '郄', '瑳']

    tone_dict = {
        '默认无声调': Style.NORMAL,
        '标准声调': Style.TONE,
        '标准声调2声调在韵母后': Style.TONE2,
        '标准声调3声调在各个拼音后': Style.TONE3,
        '声母风格': Style.INITIALS,
        '首字母风格': Style.FIRST_LETTER,
        '韵母风格': Style.FINALS,
        '标准韵母风格': Style.FINALS_TONE,
        '韵母风格2声调在韵母后': Style.FINALS_TONE2,
        '韵母风格3声调在各个拼音后': Style.FINALS_TONE3,
        '注音风格': Style.BOPOMOFO,
        '注音风格仅首字母': Style.BOPOMOFO_FIRST,
        '汉语拼音与俄语字母对照风格,声调在各个拼音之后': Style.CYRILLIC,
        '汉语拼音与俄语字母对照风格,仅首字母': Style.CYRILLIC_FIRST,
        '威妥玛拼音/韦氏拼音/威式拼音风格,无声调': Style.WADEGILES
    }
    for line in data_list:
        for key, val in tone_dict.items():
            print('\t', line, key + ': ', to_pinyin_with_tone(line, style=val))
        print()

    process_list = ['%s(%s)' % (line, to_pinyin_with_tone(line)) for line in data_list]
    process_list = [str(index + 1) + '. ' + (line.replace('1. ', '')) for index, line in enumerate(process_list)]

    print('origin: ', data_list)
    print('\n'.join(process_list))


processs_hz2pinyin()

参考

  • https://blog.csdn.net/haibo2144/article/details/144231857

http://www.kler.cn/a/470074.html

相关文章:

  • C++list
  • Java100道面试题
  • 微信小程序获取图片使用session(上篇)
  • 【开源免费】基于Vue和SpringBoot的贸易行业crm系统(附论文)
  • Functions
  • oracle基础:将字段从 VARCHAR 修改为 CLOB
  • conda/pip基本常用命令理解与整理
  • 鸣潮洛可可养成攻略 雷电云手机怎么刷养成材料
  • 安卓触摸对焦
  • Python应用——将Matplotlib图形嵌入Tkinter窗口
  • 分布式环境下定时任务扫描时间段模板创建可预订时间段
  • Unity学习笔记(七)使用状态机重构角色攻击
  • Qt菜单栏、工具栏、状态栏(右键)
  • Linux(Ubuntu24.04)安装Eigen3库
  • 公共数据授权运营机制建设(六大机制、存在问题、发展路径)
  • mongodb==安装prisma连接
  • (leetcode算法题)面试题 17.19. 消失的两个数字
  • 01、Redis初认识
  • 哈希表笔记
  • 卡诺图化简最小项表达式
  • leetcode 2274. 不含特殊楼层的最大连续楼层数 中等
  • 后台运行 Python
  • JVM实战—MAT的使用和JVM优化总结
  • pip error: microsoft visual c++ 14.0 or greater is required
  • 文档解析工具:如何将PDF文档转换为Markdown格式?
  • 【FlutterDart】 listView.builder例子二(14 /100)