Python实战:Excel中文转拼音工具开发教程

在日常办公中,我们经常需要处理Excel文件,有时候需要将中文转换为拼音缩写以方便检索和使用。今天我将分享一个使用Python开发的小工具,它可以自动将Excel文件中指定列的中文转换为拼音缩写。
C:\pythoncode\new\ConvertExcelcontentToPinyin.py

开发环境准备

首先,我们需要安装以下Python库:

pip install wxPython    # 用于创建图形界面
pip install openpyxl    # 用于处理Excel文件
pip install pypinyin    # 用于中文转拼音

核心功能设计

我们的工具主要实现以下功能:

  1. 图形界面选择Excel文件
  2. 自动定位"项目名称"和"部门"列
  3. 中文转换为拼音大写缩写
  4. 生成新的Excel文件
  5. 显示处理结果

代码实现

全部代码

import wx
import openpyxl
from pypinyin import pinyin, Style
import osclass MainFrame(wx.Frame):def __init__(self):super().__init__(parent=None, title='Excel中文转拼音缩写工具', size=(500, 300))self.init_ui()def init_ui(self):panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)# 创建文件选择按钮select_btn = wx.Button(panel, label='选择Excel文件')select_btn.Bind(wx.EVT_BUTTON, self.on_select)vbox.Add(select_btn, 0, wx.ALL | wx.CENTER, 20)# 创建状态显示文本框self.status_text = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)vbox.Add(self.status_text, 1, wx.ALL | wx.EXPAND, 20)panel.SetSizer(vbox)self.Centre()def on_select(self, event):with wx.FileDialog(self, "选择Excel文件", wildcard="Excel files (*.xlsx)|*.xlsx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() == wx.ID_CANCEL:returnpathname = fileDialog.GetPath()try:self.process_excel(pathname)except Exception as e:wx.MessageBox(f'处理文件时发生错误:{str(e)}', '错误',wx.OK | wx.ICON_ERROR)def get_pinyin_abbr(self, chinese_str):"""获取中文的拼音缩写"""if not chinese_str or not isinstance(chinese_str, str):return chinese_str# 获取每个字的拼音首字母abbr = ''for p in pinyin(chinese_str, style=Style.FIRST_LETTER):abbr += p[0].upper()return abbrdef process_excel(self, filepath):"""处理Excel文件"""self.status_text.SetValue("开始处理文件...\n")# 加载工作簿wb = openpyxl.load_workbook(filepath)ws = wb.active# 查找目标列的索引project_col = Nonedept_col = Nonefor col in range(1, ws.max_column + 1):cell_value = ws.cell(row=2, column=col).value  # 假设第2行是标题行if cell_value == "项目名称":project_col = colelif cell_value == "部门":dept_col = colif not project_col or not dept_col:raise ValueError("未找到'项目名称'或'部门'列")# 转换内容changes = []for row in range(3, ws.max_row + 1):  # 从第3行开始处理# 处理项目名称project_cell = ws.cell(row=row, column=project_col)if project_cell.value:original_project = project_cell.valueproject_cell.value = self.get_pinyin_abbr(original_project)changes.append(f"行 {row}: 项目名称 '{original_project}' -> '{project_cell.value}'")# 处理部门dept_cell = ws.cell(row=row, column=dept_col)if dept_cell.value:original_dept = dept_cell.valuedept_cell.value = self.get_pinyin_abbr(original_dept)changes.append(f"行 {row}: 部门 '{original_dept}' -> '{dept_cell.value}'")# 生成新文件名file_dir = os.path.dirname(filepath)file_name = os.path.basename(filepath)new_file_name = f"pinyin_{file_name}"new_filepath = os.path.join(file_dir, new_file_name)# 保存新文件wb.save(new_filepath)# 更新状态status_msg = "\n".join(changes)self.status_text.AppendText(f"\n转换完成!更改详情:\n{status_msg}\n\n新文件已保存为:{new_filepath}")def main():app = wx.App()frame = MainFrame()frame.Show()app.MainLoop()if __name__ == '__main__':main()

1. 创建图形界面

首先,我们使用wxPython创建一个简单的图形界面:

class MainFrame(wx.Frame):def __init__(self):super().__init__(parent=None, title='Excel中文转拼音缩写工具', size=(500, 300))self.init_ui()def init_ui(self):panel = wx.Panel(self)vbox = wx.BoxSizer(wx.VERTICAL)# 创建文件选择按钮select_btn = wx.Button(panel, label='选择Excel文件')select_btn.Bind(wx.EVT_BUTTON, self.on_select)vbox.Add(select_btn, 0, wx.ALL | wx.CENTER, 20)# 创建状态显示文本框self.status_text = wx.TextCtrl(panel, style=wx.TE_MULTILINE | wx.TE_READONLY)vbox.Add(self.status_text, 1, wx.ALL | wx.EXPAND, 20)panel.SetSizer(vbox)self.Centre()

2. 实现文件选择功能

添加文件选择对话框和错误处理:

def on_select(self, event):with wx.FileDialog(self, "选择Excel文件", wildcard="Excel files (*.xlsx)|*.xlsx",style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:if fileDialog.ShowModal() == wx.ID_CANCEL:returnpathname = fileDialog.GetPath()try:self.process_excel(pathname)except Exception as e:wx.MessageBox(f'处理文件时发生错误:{str(e)}', '错误',wx.OK | wx.ICON_ERROR)

3. 中文转拼音功能

使用pypinyin库实现中文转拼音缩写:

def get_pinyin_abbr(self, chinese_str):"""获取中文的拼音缩写"""if not chinese_str or not isinstance(chinese_str, str):return chinese_str# 获取每个字的拼音首字母abbr = ''for p in pinyin(chinese_str, style=Style.FIRST_LETTER):abbr += p[0].upper()return abbr

4. Excel处理核心功能

实现Excel文件的读取、处理和保存:

def process_excel(self, filepath):"""处理Excel文件"""self.status_text.SetValue("开始处理文件...\n")# 加载工作簿wb = openpyxl.load_workbook(filepath)ws = wb.active# 查找目标列的索引project_col = Nonedept_col = Nonefor col in range(1, ws.max_column + 1):cell_value = ws.cell(row=2, column=col).valueif cell_value == "项目名称":project_col = colelif cell_value == "部门":dept_col = col# 转换内容并保存# ... (详细代码见完整实现)

技术要点解析

  1. wxPython使用技巧

    • 使用BoxSizer进行界面布局
    • 添加文件选择对话框
    • 实现事件绑定
  2. Excel处理技巧

    • 使用openpyxl读写Excel文件
    • 动态查找目标列
    • 保持原始格式不变
  3. 中文转拼音处理

    • 使用pypinyin库处理中文
    • 提取拼音首字母
    • 处理异常情况

使用效果

  1. 运行程序后显示简洁的操作界面
  2. 点击按钮选择Excel文件
  3. 自动处理并生成新文件
  4. 界面实时显示处理进度和结果

实际应用案例

比如有以下数据:

  • 项目名称:智能消防工程
  • 部门:消防支队

转换后变为:

  • 项目名称:ZNXFGC
  • 部门:XFZD

注意事项

  1. 确保Excel文件格式正确
  2. 表格第2行必须是标题行
  3. 从第3行开始处理数据
  4. 原文件不会被修改

未来优化方向

  1. 添加自定义列选择功能
  2. 支持更多Excel格式
  3. 添加批量处理功能
  4. 优化转换规则

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22228.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是矩阵账号?如何高效运营tiktok矩阵账号

‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​​‌​​‌​‍‌​‌‌​‌‌‌‍‌​‌​‌​​​‍‌​​‌​‌‌​‍‌​​​​‌‌​‍‌​‌​​‌‌‌‍‌​​‌‌​‌​‍‌​‌​​‌‌‌‍‌​‌‌‌​​‌‍‌‌​​‌‌‌​‍‌‌​​‌‌​​‍‌…

Docker-技术架构演进之路

目录 一、概述 常见概念 二、架构演进 1.单机架构 2.应用数据分离架构 3.应用服务集群架构 4.读写分离 / 主从分离架构 5.引入缓存 —— 冷热分离架构 6.垂直分库 7.业务拆分 —— 微服务 8.容器化引入——容器编排架构 三、尾声 一、概述 在进行技术学习过程中&am…

并查集算法篇上期:并查集原理及实现

引入 那么我们在介绍我们并查集的原理之前,我们先来看一下并查集所应用的一个场景:那么现在我们有一个长度为n的数组,他们分别属于不同的集合,那么现在我们要查询数组当中某个元素和其他元素是否处于同一集合当中,或者…

MacOS 15.3 卸载系统内置软件

1、关闭系统完整性(SIP) 进入恢复模式(recovery) 如果您使用的是黑苹果或者白苹果,可以选择 重启按住CommandR 进入,如果是M系列芯片,长按开机键,进入硬盘选择界面进入。 我是MacMini M4芯片,关…

内容中台重构企业内容管理的价值维度与实施路径

内容概要 在数字化转型进程中,企业内容管理(ECM)与内容中台的差异性体现在价值维度的重构与能力边界的突破。传统ECM系统通常聚焦于文档存储、权限控制等基础功能,而内容中台通过标准化流程引擎与智能工具链,构建起覆…

挖矿病毒实战分析

场景说明 运维人员再设备巡检过程中发现CPU莫名到达百分百,出现异常,请开始你的应急响应排查 cpu百分百,基本就可以确定是中了挖矿病毒了 我们使用命令ps -aux查看进程,或者使用top -c查看进程,排查挖矿程序 使用t…

蓝桥杯好数

样例输入: 24 输出:7 输入:2024 输出: 150 思路:本题朴素方法的时间复杂度是O(n * log10(n)) ,不超时。主要考察能否逐位取数,注意细节pi,这样不会改变i,否则会导致循环错误。 #in…

cs*n 网页内容转为html 加入 onenote

csdn上有好用的内容,我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…

【后端基础】布隆过滤器原理

文章目录 一、Bloom Filter(布隆过滤器)概述1. Bloom Filter 的特点2. Bloom Filter 的工作原理 二、示例1. 添加与查询2. 假阳性 三、Bloom Filter 的操作1、假阳性概率2、空间效率3、哈希函数的选择 四、应用 Bloom Filter 是一种非常高效的概率型数据…

【SPIE出版,见刊快速,EI检索稳定,浙江水利水电学院主办】2025年物理学与量子计算国际学术会议(ICPQC 2025)

2025年物理学与量子计算国际学术会议(ICPQC 2025)将于2025年4月18-20日在中国杭州举行。本次会议旨在汇聚全球的研究人员、学者和业界专家,共同探讨物理学与量子计算领域的最新进展与前沿挑战。随着量子技术的快速发展,其在信息处…

数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)

数据库驱动找起来好麻烦,我整理到了一起,需要的朋友免费下载:驱动下载 目前收录了Oracle、Mysql、达梦、Postgresql的数据库驱动的多个版本,后续可能会分享更多。

【2025最新版】Chrome谷歌浏览器如何能恢复到之前的旧版本

背景 今天程序突然出了bug,无法自动测试了,显示Chrome版本不匹配,一看,Chrome居然在我已经关闭升级的情况下,又给我升级了,然后就悲剧了,我的代码不能用了。 于是,做了以下几步&…

网络运维学习笔记 017HCIA-Datacom综合实验01

文章目录 综合实验1实验需求总部特性 分支8分支9 配置一、 基本配置(IP二层VLAN链路聚合)ACC_SWSW-S1SW-S2SW-Ser1SW-CoreSW8SW9DHCPISPGW 二、 单臂路由GW 三、 vlanifSW8SW9 四、 OSPFSW8SW9GW 五、 DHCPDHCPGW 六、 NAT缺省路由GW 七、 HTTPGW 综合实…

出行项目案例

spark和kafka主要通过Scala实现,Hadoop和HBase主要基于java实现。 通过该项目,主要达到以下目的: (1)通用的数据处理流程,入门大数据领域 (2)真实体验大数据开发工程师的工作 &a…

2.21力扣-回溯组合

77. 组合 - 力扣&#xff08;LeetCode&#xff09; 一&#xff1a;JAVA class Solution {List<Integer> list new LinkedList<>();List<List<Integer>> ans new LinkedList<>();public List<List<Integer>> combine(int n, int k)…

智能合约的部署

https://blog.csdn.net/qq_40261606/article/details/123249473 编译 点击图中的 “Compile 1_Storage.sol” 存和取一个数的合约&#xff0c;remix自带 pragma solidity >0.8.2 <0.9.0; /*** title Storage* dev Store & retrieve value in a variable* custom:d…

vmvare kali如何配置桥接模式进行上网

注意点:虚拟机可以PING通物理机,但是PING不通其他的网站。经过收集资料,得知由于是校园网连接,所以DHCP只能分配一个授权的IP地址给连接的主机,由于KALI是桥接物理机,物理机已经获得了这个授权的IP,所以导致桥接的虚拟机无法上网。所以不是因为配置的有问题,而是网络的…

了解Python中的SciPy库

么是 SciPy&#xff1f; SciPy&#xff08;发音为“Sigh Pie”&#xff09;是 Scientific Python 的首字母缩写词&#xff0c;它是 Python 的开源库&#xff0c;用于科学和技术计算。它是 Python 编程语言中称为 Numpy 的基本数组处理库的扩展&#xff0c;旨在支持高级科学和工…

python网络安全怎么学 python做网络安全

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 众所周知&#xff0c;python是近几年比较火的语言之一&#xff0c;它具有简单易懂、免费开源、可移植、可扩展、丰富的第三方库函数等特点&#xff0c;Java需要大…

Ubuntu下mysql主从复制搭建

本文介绍mysql 8.4主从集群的搭建&#xff0c;从单个机器安装到集群的配置&#xff0c;整体走了一遍&#xff0c;希望对大家有帮助。mysql 8.4和之前的版本命令上有些变化&#xff0c;大家用来参考。 0、环境 ubuntu&#xff1a; 22.04mysql&#xff1a;8.4 1、安装mysql 1…