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

python为姓名注音实战案例

有如下数据,需要对名字注音。

数据样例:👇

图片

一、实现过程

前提条件:由于会用到pypinyin库,所以一定得提前安装。

pip install pypinyin

图片

1、详细代码:

from pypinyin import pinyin, Style# 输入数据
names = ["曾靖茵", "吕咏潼", "曾宝莹", "谢婉晴", "王 悦", "高 妍", "刘付浩宇","欧文彬", "何嘉俊", "区诚煜", "黄梓钊", "郭梓涵", "欧阳梓锋"
]# 定义函数,接受一个名字作为参数
def get_pinyin_with_tone(name):result = []# 遍历名字中的每个字符for char in name:if char.strip():  # 如果字符不是仅由空格组成(即忽略空格)# 使用 pypinyin 库获取当前字符的带声调拼音,style=Style.TONE 表示获取带声调的拼音格式py = pinyin(char, style=Style.TONE)[0][0]# 将字符和对应的拼音格式化为特定格式并添加到结果列表中result.append(f"{char}({py})")# 将结果列表中的元素连接成一个字符串并返回return ''.join(result)# 处理并打印结果
for name in names:print(get_pinyin_with_tone(name))

2、输出结果

图片

这时候发现和需求不对,有的姓名为多音字,需要进行特殊处理。

3、优化后的最终代码:

from pypinyin import pinyin, Style, lazy_pinyin# 输入数据
names = ["曾靖茵", "吕咏潼", "曾宝莹", "谢婉晴", "王 悦", "高 妍", "刘付浩宇","欧文彬", "何嘉俊", "区诚煜", "黄梓钊", "郭梓涵", "欧阳梓锋"
]# 多音字字典
multi_tone_chars = {'曾': 'zēng','区': 'ōu','阳': 'yáng',
}# 定义函数,接受一个名字作为参数
def get_pinyin_with_tone(name):result = []# 遍历名字中的每个字符for char in name:if char.strip():  # 如果字符不是仅由空格组成(即忽略空格)# 判断当前字符是否在多音字字典中if char in multi_tone_chars:# 如果在,直接从多音字字典中获取对应的拼音py = multi_tone_chars[char]else:# 如果不在,使用 lazy_pinyin 函数获取当前字符的带声调拼音py = lazy_pinyin(char, style=Style.TONE)[0]# 将字符和对应的拼音格式化为特定格式并添加到结果列表中result.append(f"{char}({py})")# 将结果列表中的元素连接成一个字符串并返回return ''.join(result)# 处理并打印结果
for name in names:print(get_pinyin_with_tone(name))

4、最终结果:

图片

http://www.lryc.cn/news/450076.html

相关文章:

  • MATLAB中的艺术:用爱心形状控制坐标轴
  • 基于mybatis-plus创建springboot,添加增删改查功能,使用postman来测试接口出现的常见错误
  • Java:Object操作
  • Java-并发基础
  • 速盾:网页游戏部署高防服务器有什么优势?
  • 【从0开始自动驾驶】ros2编写自定义消息 msg文件和msg文件嵌套
  • docker 部署 Seatunnel 和 Seatunnel Web
  • 【易上手快捷开发新框架技术】nicegui标签组件lable用法庖丁解牛深度解读和示例源代码IDE运行和调试通过截图为证
  • 从HarmonyOS Next导出手机照片
  • [Docker学习笔记]Docker的原理Docker常见命令
  • 【ESP 保姆级教程】小课设篇 —— 案例:20240507_esp01s+UNO的智能浇水系统
  • 如何设置MySQL分布式架构主键ID,为什么不能使用自增ID或者UUID做主键?
  • 服务器虚拟化详解
  • 医疗陪诊APP开发实战:从互联网医院系统源码开始
  • jenkins 构建报错ERROR: Error fetching remote repo ‘origin‘
  • 初识C#(三)- 数组
  • 黑马智数Day3
  • 【Java】再一次踩了整数溢出的坑
  • Windows开发工具使用技巧大揭秘:让编码效率翻倍的秘籍!
  • CSS外边距
  • C++ set,multiset与map,multimap的基本使用
  • 评估潜力无限:解读自闭症患者的工作能力评估
  • js 实现视频封面截图
  • Hadoop FileSystem Shell 常用操作命令
  • uniapp EChars图表
  • 最新版ingress-nginx-controller安装 使用host主机模式
  • 实习问题(配置文件获取参数)
  • C#测试调用Ghostscript.NET浏览PDF文件
  • MySQL本地安装步骤
  • redisson使用笔记