用 Python 將分組文本轉為 Excel:以四級詞匯為例的實戰解析

一、背景引入:從“人工整理”到“自動化處理”的轉變

在英語學習過程中,我們經常會接觸各種分組整理的詞匯表,比如“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;核心…