一、背景引入:从“人工整理”到“自动化处理”的转变

在英语学习过程中,我们经常会接触各种分组整理的词汇表,比如“Group1”对应一组单词及释义,随后是“Group2”、“Group3”等等。如果你下载了一个 .txt 格式的四级词汇表,打算分类整理后导入 Excel 学习软件中,大概率你会遇到格式杂乱、分组不清、复制麻烦的问题。

这正是我们今天要解决的实际场景:如何用 Python 脚本自动读取一份分组文本,提取每组单词及释义,并导出为结构清晰、按组分类的 Excel 文件?

本文将通过一段简洁但实用的代码,为你完整拆解整个处理过程。只需一次点击,就能让海量词汇“格式整齐地排队”进入 Excel,开启你的高效学习之旅。


二、思路分析:我们到底要做什么?

整个任务可以分为以下几个步骤:

  1. 读取文本文件:读取本地 .txt 文件中的原始词汇数据。
  2. 按组分割内容:使用正则表达式识别每个 Group 的起始点,并提取组名与内容。
  3. 提取每行单词和释义:针对每组中的每一行,解析出单词与释义(考虑 Tab 和空格分隔)。
  4. 分组保存为 Excel Sheet:每个 Group 单独作为一个 Excel 的 Sheet 保存,输出为 .xlsx 文件。
  5. 打印结果提示:脚本执行完毕后,输出处理结果路径。

这不仅是一次对正则表达式和 pandas 的实战练习,也是一次程序自动化处理文本数据的典型示例。


三、具体功能实现:每一步都不马虎

1. 读取文本数据

with open("四级单词.txt", "r", encoding="utf-8") as file:raw_text = file.read()

这段代码打开并读取了名为《四级单词.txt》的文件内容。注意编码采用 UTF-8,防止中文乱码。

2. 利用正则表达式识别 Group 分组

pattern = r"(Group\d+)\n"
splits = re.split(pattern, raw_text)
  • 我们设定一个正则:Group 开头,后接数字,最后以换行结束。
  • 然后用 re.split 分割文本,这样就能将每组的组名和词条内容分开。

举个例子,原文本可能像这样:

Group1
apple	苹果
banana	香蕉
Group2
run	跑
jump	跳

经过 re.split 之后,splits 的结果会是:

['', 'Group1', 'apple\t苹果\nbanana\t香蕉', 'Group2', 'run\t跑\njump\t跳']

3. 将每组单词提取到字典中

grouped_data = defaultdict(list)
for i in range(1, len(splits), 2):group_name = splits[i]entries = splits[i + 1].strip().split("\n")for entry in entries:...
  • 利用 Python 的 defaultdict(list) 自动为每个组建立一个单词列表。

  • 每个词条处理如下逻辑:

    • 优先使用 \t 制表符分隔;
    • 若没有 \t,尝试用空格分隔;
    • 去掉无效或空行,确保数据干净整洁。
if "\t" in entry:word, meaning = entry.split("\t", 1)
elif " " in entry:parts = entry.split(maxsplit=1)if len(parts) == 2:word, meaning = partselse:continue

这样处理后,每个分组会变成例如:

'Group1': [('apple', '苹果'), ('banana', '香蕉')]

4. 写入 Excel 文件,每组一个 Sheet

with pd.ExcelWriter(output_path) as writer:for group, word_list in grouped_data.items():df = pd.DataFrame(word_list)df.to_excel(writer, sheet_name=group, index=False, header=False)
  • 使用 pandas.ExcelWriter 写入 Excel。
  • 每个分组作为一个单独的 Sheet 页。
  • 不写入表头或行号,使数据更加简洁。

最终生成的文件结构清晰、美观,每页都是该组的词汇,便于记忆与分类学习。

5. 执行结果提示

print(f"转换完成,已保存为:{output_path}")

一个简单但贴心的用户提示,方便确认处理成功与结果文件位置。


四、代码展示:实用就是最好的美学

完整代码如下(可直接运行):

import re
import pandas as pd
from collections import defaultdictwith open("四级单词.txt", "r", encoding="utf-8") as file:raw_text = file.read()pattern = r"(Group\d+)\n"
splits = re.split(pattern, raw_text)
grouped_data = defaultdict(list)for i in range(1, len(splits), 2):group_name = splits[i]entries = splits[i + 1].strip().split("\n")for entry in entries:entry = entry.strip()if not entry:continueif "\t" in entry:word, meaning = entry.split("\t", 1)elif " " in entry:parts = entry.split(maxsplit=1)if len(parts) == 2:word, meaning = partselse:continueelse:continuegrouped_data[group_name].append((word.strip(), meaning.strip()))output_path = "四级单词.xlsx"
with pd.ExcelWriter(output_path) as writer:for group, word_list in grouped_data.items():df = pd.DataFrame(word_list)df.to_excel(writer, sheet_name=group, index=False, header=False)print(f"转换完成,已保存为:{output_path}")

五、学后总结:你收获了什么?

本脚本涵盖了多个关键技能点,值得初中级开发者好好吸收:

  • 正则表达式:熟练使用 re.split()re.match() 是文本解析的基础;
  • 文本清洗:处理不规则数据需要严谨的判断和预处理;
  • 数据结构选型defaultdict 是处理分组数据的神器;
  • pandas 应用:将数据写入 Excel 是最常见的自动化场景之一;
  • 代码可复用性强:换成词汇表、笔记数据、考试清单都能用!

拓展建议:

  • 增加错误日志,记录格式不规范的词条;
  • 支持中文注释与 Sheet 排序;
  • 加入 GUI 界面(如 Tkinter),一键操作更直观。

通过这一小项目,你不仅提升了文本处理能力,还掌握了数据清洗与文件导出的实用技巧。记住,编程的价值在于解决问题,而最能让你成长的,正是这种“从无到有”的小工具!


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

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

相关文章

Ffmpeg滤镜

打开设备 添加滤镜 循环录制文件 #include "libavdevice/avdevice.h" #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libavfilter/avfilter.h" #include "libavfilter/buffersink.h" #incl…

HarmonyOS AI辅助编程工具(CodeGenie)UI生成

UI Generator基于BitFun Platform AI能力平台,用于快速生成可编译、可运行的HarmonyOS UI工程,支持基于已有UI布局文件(XML),快速生成对应的HarmonyOS UI代码,其中包含HarmonyOS基础工程、页面布局、组件及…

【第三节】ubuntu server配置远程连接

首先在ubuntu server中查看ip,打开虚拟机,输入ip addr show ,这个命令很好记,几乎就是英文自然语言 下面我们准备远程连接工具,我选择的开源的ET,全称是electerm,圈起来的是必须输入的内容,输入完成后点击保…

CCS-MSPM0G3507-7-模块篇-MPU6050的基本使用

前言本篇我们接收对MPU6050的基本使用,获取ID,通过IIC协议获取寄存器的值,至于高级滤波算法,比如卡尔曼滤波,或者上面的,后面再更新基本配置最好选择PA0和PA1,5V开漏然后给上代码MPU6050.c#incl…

spring-ai agent概念

目录agent 概念理解记忆能力工具计划agent 概念理解 agent 智能体,突出智能 大模型的感觉 告诉你怎么做(也不一定正确)不会帮你做 Agent的感觉 直接准确的帮你做完(比如,告诉 AI Agent 帮忙下单一份外卖&#xff0c…

NO.4数据结构数组和矩阵|一维数组|二维数组|对称矩阵|三角矩阵|三对角矩阵|稀疏矩阵

数组的储存 【定义】 数组: 由 n(≥1) 个相同类型的数据元素构成的有限序列, 是线性表的推广。 一旦被定义, 维数和长度就不可再改变, 一般对其只有元素的存取和修改操作。 一维数组 Arr[a0,…,an−1] Arr[…

如何把Arduino IDE中ESP32程序bin文件通过乐鑫flsah_download_tool工具软件下载到ESP32中

目录前言获取Arduino IDE中ESP32程序bin文件flsah_download_tool工具软件下载程序bin文件到ESP32中总结前言 Arduino IDE丰富的驱动库给ESP32的开发带来了很多便利,当我们下载程序的时候,直选选择好ESP32开发板型号和端口号即可下载程序到开发板中&…

2025XYD Summer Camp 7.11 模考

T1TTT 组询问,每组询问给定 n,mn,mn,m,求 (nm)−1⋅∑i1n∑j1mlcm⁡(i,j) (nm)^{-1}\cdot\sum_{i1}^n\sum_{j1}^m\operatorname{lcm}(i,j) (nm)−1⋅i1∑n​j1∑m​lcm(i,j) 对 109710^971097 取模。 T≤20000T\le 20000T≤20000,n,m≤107n,m…

uniapp 微信小程序点击开始倒计时

一、示例 当点击按钮时就开始倒计时代码 <template><view class"sq_box"><button class"button" click"topay">按钮</button><u-modal v-model"modalShow" :show-cancel-button"true" :content&…

【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_tcp_timeout_established

目录一、核心概念1. **TCP 连接状态跟踪**2. **参数作用**二、默认值与典型场景1. **默认值**2. **典型场景**三、如何调整该参数1. **查看当前值**2. **临时修改&#xff08;重启后失效&#xff09;**3. **永久修改**四、相关参数与配合优化1. **其他 TCP 状态超时参数**2. **…

鸿蒙app 开发中的Record<string,string>的用法和含义

Record<string, string> 在鸿蒙 App 开发中的用法在 TypeScript 中&#xff0c;Record<string, string> 是一个映射类型&#xff08;Mapped Type&#xff09;&#xff0c;用于描述一个对象的结构。在鸿蒙 App 开发中&#xff0c;它常用于定义接口、组件属性或函数参…

Webpack、Vite配置技巧与CI/CD流程搭建全解析

Webpack、Vite配置技巧与CI/CD流程搭建全解析 在现代前端开发中&#xff0c;构建工具配置和自动化部署流程是提升开发效率和项目质量的关键环节。本文将深入探讨Webpack和Vite这两大构建工具的核心配置技巧&#xff0c;并详细介绍CI/CD流程的搭建方法。 一、Webpack核心配置技巧…

输入npm install后发生了什么

一、准备阶段&#xff1a;配置与环境检查读取配置优先级npm install 首先加载多层级的配置&#xff08;优先级从高到低&#xff09;4&#xff1a;项目级 .npmrc用户级 .npmrc&#xff08;如 ~/.npmrc&#xff09;全局 npmrcnpm 内置默认配置可通过 npm config ls -l 查看所有配…

SpringBoot集成Redis、SpringCache

1 Redis介绍 1.1 Redis作为缓存 由于Redis的存取效率非常高,在开发实践中,通常会将一些数据从关系型数据库(例如MySQL)中读取出来,并写入到Redis中,后续当需要访问相关数据时,将优先从Redis中读取所需的数据,以此,可以提高数据的读取效率,并且对一定程度的保护关系型…

静态路由综合配置实验报告

一、实验拓扑二、实验需求1.除了R5的环回地址固定5.5.5.0/24&#xff0c;其他网段基于192.168.1.0/24进行合理划分&#xff1b;2.R1-R4每个路由器存在两个环回接口&#xff0c;模拟PC&#xff0c;地址也在192.168.1.0/24网络内&#xff1b;3.R1-R4不能直接编写到达5.5.5.0/24的…

【一起来学AI大模型】PyTorch DataLoader 实战指南

DataLoader 是 PyTorch 中处理数据的核心组件&#xff0c;它提供了高效的数据加载、批处理和并行处理功能。下面是一个全面的 DataLoader 实战指南&#xff0c;包含代码示例和最佳实践。基础用法&#xff1a;简单数据加载import torch from torch.utils.data import Dataset, D…

SpringBoot单元测试类拿不到bean报空指针异常

原代码package com.atguigu.gulimall.product;import com.aliyun.oss.OSSClient; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; impo…

持续集成 简介环境搭建

1. 持续集成简介 1.1 持续集成的作用 随着互联网的蓬勃发展,软件生命周期模型也经历了几个比较大的阶段,从最初的瀑布模型,到 V 模型,再到现在的敏捷或者 devops,不论哪个阶段,项目从立项到交付几乎都离不开以下几个过程,开发、构建、测试和发布,而且一直都在致力于又…

关于 java:11. 项目结构、Maven、Gradle 构建系统

一、Java 项目目录结构标准1.1 Java 项目标准目录结构总览标准 Java 项目目录结构&#xff08;以 Maven / Gradle 通用结构为基础&#xff09;&#xff1a;project-root/ ├── src/ │ ├── main/ │ │ ├── java/ # 主业务逻辑代码&#xff08;核心…