首页 > 编程语言 >Python实搞:自动给文本标注拼音并输出excel

Python实搞:自动给文本标注拼音并输出excel

时间:2023-12-31 10:00:46浏览次数:34  
标签:拼音 Python text excel 汉字 num 文本

一、为什么要搞?

前几天有同学在讨论家中小盆友的作业问题,说连一些拼音作业的难度已经超出了能力范围,感叹自己已经比不上现在的小学生了。听得滋滋有味的我又产生了一个大胆的想法:

使用Python自动在每个文字的上方标注拼音

预期输出示例如下:

Python实搞:自动给文本标注拼音并输出excel_拼音

二、准备如何搞?

查阅一番资料后,发现一个神奇的库:pypinyin,可以轻松将汉字文本转换为拼音

先来安装pypinyin

pip install pypinyin

这还不够,要将文本和拼音输出到文件,我想到了以下两条路:

1.结果写入到txt或者doc文件

2.结果写入到excel表格

仔细思考后发现第一条路很难实现拼音和汉字的连续换行以及一一对应,而通过excel表格的话能轻松标识汉字和拼音需要写入的行和列

这里使用比较熟悉的xlwt模块写入excel,先来安装

pip install xlwt

事先准备了需要转换的文本内容test_file.txt,1000+汉字,手动注音的话,那不得放个寒暑假了啊:

Python实搞:自动给文本标注拼音并输出excel_excel_02

三、说搞咱就搞!

文本读取与预处理

使用with open方法打开文本,readlines方法读取文本内容

注意:文本内容当中包含换行符,这里做了去除处理

# 文本读取与预处理
file = 'test_file.txt'
with open(file, 'r', encoding='utf-8') as f:
    text = f.readlines()
    f.close()
new_text = ''.join((''.join(text)).splitlines())  # 去除文本的换行符
print(new_text)

运行效果:

Python实搞:自动给文本标注拼音并输出excel_pypinyin_03

文本拼音获取

一行代码搞定(导库不算哈)

from pypinyin import pinyin

text_pinyin = pinyin(new_text)
print(text_pinyin)

运行结果:

Python实搞:自动给文本标注拼音并输出excel_excel_04

结果excel输出

我们阔以看到,汉字字数和拼音数量是对得上的

list_length_hz = len(new_text)  # 汉字字数
list_length_py = len(text_pinyin) # 拼音数量
print(f"汉字:{list_length_hz}")
print(f"拼音:{list_length_py}")

运行结果:

Python实搞:自动给文本标注拼音并输出excel_excel_05

先使用xlwt建立wookbook和worksheet

import xlwt

new_file = 'target.xls'
wb = xlwt.Workbook(encoding='utf-8')  # 新建工作簿
ws = wb.add_sheet('target_sheet', cell_overwrite_ok=True)  # 新建工作表

这里将汉字和拼音写入到excel的  列*行=20*max_row 的单元格中,先设置列数并根据拼音数量获取最大行数

import math

num_cols = 20  # 列数
num_rows = math.ceil(list_length_py / 20)  # 最大行数,不足20补一行

然后将汉字写入Excel工作表的奇数行

for i in range(num_rows):
    for j in range(num_cols):
        # 获取汉字列表值,若索引超出范围则使用空字符串代替
        v = '' if i * num_cols + j >= list_length_hz else new_text[i * num_cols + j]
        # 将值写入单元格的奇数行中
        ws.write(i*2+1, j, v)

再将拼音写入Excel工作表的偶数行

for i in range(num_rows):
    for j in range(num_cols):
        # 获取汉字列表值,若索引超出范围则使用空字符串代替
        v = '' if i * num_cols + j >= list_length_py else text_pinyin[i * num_cols + j]
        # 将值写入单元格的偶数行中
        ws.write(i*2, j, v)

最后将工作簿保存为excel

wb.save(new_file)

excel结果文件示例如下:

Python实搞:自动给文本标注拼音并输出excel_拼音_06

四、搞完收工!

1.使用pypin库一行代码轻松实现文本转拼音

2.使用xlwt库输出excel结果文件,将对应的拼音标注到每个汉字的上方

3.问题:若文本内容中包含连续的无法转换为拼音的字符,会造成拼音和汉字不能一一对应

标签:拼音,Python,text,excel,汉字,num,文本
From: https://blog.51cto.com/u_16379005/9046475

相关文章

  • Python调用 "keybd_event" API模拟按键
    在Python中,可以使用ctypes库来调用WindowsAPI,实现对Windows系统的底层操作。本文将以模拟按键操作(ctrl+v)为例,详细讲解如何在Python中调用WindowsAPI。1.导入ctypes库ctypes是Python的一个外部函数库,它提供了丰富的数据类型,便于调用DLL或共享库中的函数。......
  • python 运算符 列表操作 元组
    可以对字符串进行切片访问(同时适用于字符、列表、元组等)。字符串从左往右,索引从0开始;从右往左,索引从–1开始。可以取字符串中的片段,切片索引按左闭右开原则:var='HelloWorld!'#按索引取部分内容,索引从0开始,左必须小于右#支持字符、列表、元组var[0]#'H'#从右往......
  • java对指定的excel续写入数据
    /***向已知表中插入数据,累计追加*写入前先判断表是否存在,表中是否有数据**@paramdateListlist实体类对象*@paramfilePathexcel的路径D:\\123.xls*@throwsException*/publicstaticvoidinserSheetData(List<excelDate>dateList,StringfilePath)thro......
  • 【python爬虫课程设计】大数据分析——有多少人花时间通过身体测量来思考自己的健康状
    一、选题背景介绍在现代快节奏的生活中,越来越多的人开始关注自己的健康状况,并采取积极的措施来改善和维持健康。体重是一个重要的身体指标,对于评估健康状况和制定健康计划具有重要意义。通过定期测量体重,人们可以了解自己的体重变化趋势,并将其与健康目标相比较。体重的增加或减......
  • Python解析命令行参数
    Python解析命令行参数获取命令行参数在Python中命令行参数通过sys.argv传递,它是一个list类型,其中的元素为字符串。importsysdefcli_parser():print(f"参数个数:{len(sys.argv)}")print(f"参数列表:{str(sys.argv)}")print(f"脚本名:{sys.argv[0]}")for......
  • linux部署Python UI自动化项目过程
    1.安装chrome浏览器下载访问谷歌中文网站:GoogleChrome网络浏览器。将页面滑到最下面,点击其他平台,在弹出的页面选择linux选择对应的系统版本进行下载。下载后的deb包默认是arm架构,rpm包默认是x86架构的。所以在选择的时候要对应的系统架构选择安装包,可以通过lscpu查看......
  • Python NumPy 生成随机数的方法及示例
    ​ NumPy是一个强大的库,用于数值计算,包括生成各种随机数。可以使用random.rand()、random.randn()、random.randint()、random.uniform()、random.normal()和random.seed()函数方法生成随机数。本文介绍生成随机数的方法,以及相关的示例代码。1、numpy.random.rand()numpy.ra......
  • Codeforces Round 918 (Div. 4) (前缀和,权值树状数组,二维偏序, python + golang)
    Dashboard-CodeforcesRound918(Div.4)-Codeforces  fromcollectionsimport*defsolve():a,b,c=list(map(int,input().split()))hs=defaultdict(int)hs[a]+=1hs[b]+=1hs[c]+=1foriinhs:ifhs[i]=......
  • 【Python爬虫课程设计】招聘网站数据分析与可视化
    一、选题背景随着互联网的快速发展和信息化时代的到来,招聘网站成为求职者和招聘公司之间最重要的信息交流平台之一。招聘网站上聚集了大量的职位信息、薪资数据和公司信息,这些数据蕴含着丰富的招聘市场和就业趋势的信息,对求职者和招聘公司都具有重要的参考价值。然而,由于招聘网站......
  • appium-python自动开启和关闭服务(win/mac)
    后台启动&关闭appiumserver的命令启动appium:appium-a127.0.0.1-p4723--logxxx.log--local-timezoneAppium服务命令行参数启动appium-p4723指定端口--logxxx.log指定日志保存到指定文件内(可以是绝对路径)--local-timezone指定时间为本地时间--log-levelerror......