利用Python將分組文本轉(zhuǎn)為Excel的流程步驟
一、背景引入:從“人工整理”到“自動(dòng)化處理”的轉(zhuǎn)變
在英語(yǔ)學(xué)習(xí)過(guò)程中,我們經(jīng)常會(huì)接觸各種分組整理的詞匯表,比如“Group1”對(duì)應(yīng)一組單詞及釋義,隨后是“Group2”、“Group3”等等。如果你下載了一個(gè) .txt
格式的四級(jí)詞匯表,打算分類(lèi)整理后導(dǎo)入 Excel 學(xué)習(xí)軟件中,大概率你會(huì)遇到格式雜亂、分組不清、復(fù)制麻煩的問(wèn)題。
這正是我們今天要解決的實(shí)際場(chǎng)景:如何用 Python 腳本自動(dòng)讀取一份分組文本,提取每組單詞及釋義,并導(dǎo)出為結(jié)構(gòu)清晰、按組分類(lèi)的 Excel 文件?
本文將通過(guò)一段簡(jiǎn)潔但實(shí)用的代碼,為你完整拆解整個(gè)處理過(guò)程。只需一次點(diǎn)擊,就能讓海量詞匯“格式整齊地排隊(duì)”進(jìn)入 Excel,開(kāi)啟你的高效學(xué)習(xí)之旅。
二、思路分析:我們到底要做什么?
整個(gè)任務(wù)可以分為以下幾個(gè)步驟:
- 讀取文本文件:讀取本地
.txt
文件中的原始詞匯數(shù)據(jù)。 - 按組分割內(nèi)容:使用正則表達(dá)式識(shí)別每個(gè) Group 的起始點(diǎn),并提取組名與內(nèi)容。
- 提取每行單詞和釋義:針對(duì)每組中的每一行,解析出單詞與釋義(考慮
Tab
和空格分隔)。 - 分組保存為 Excel Sheet:每個(gè) Group 單獨(dú)作為一個(gè) Excel 的 Sheet 保存,輸出為
.xlsx
文件。 - 打印結(jié)果提示:腳本執(zhí)行完畢后,輸出處理結(jié)果路徑。
這不僅是一次對(duì)正則表達(dá)式和 pandas
的實(shí)戰(zhàn)練習(xí),也是一次程序自動(dòng)化處理文本數(shù)據(jù)的典型示例。
三、具體功能實(shí)現(xiàn):每一步都不馬虎
1. 讀取文本數(shù)據(jù)
with open("四級(jí)單詞.txt", "r", encoding="utf-8") as file: raw_text = file.read()
這段代碼打開(kāi)并讀取了名為《四級(jí)單詞.txt》的文件內(nèi)容。注意編碼采用 UTF-8,防止中文亂碼。
2. 利用正則表達(dá)式識(shí)別 Group 分組
pattern = r"(Group\d+)\n" splits = re.split(pattern, raw_text)
- 我們?cè)O(shè)定一個(gè)正則:
Group
開(kāi)頭,后接數(shù)字,最后以換行結(jié)束。 - 然后用
re.split
分割文本,這樣就能將每組的組名和詞條內(nèi)容分開(kāi)。
舉個(gè)例子,原文本可能像這樣:
Group1 apple 蘋(píng)果 banana 香蕉 Group2 run 跑 jump 跳
經(jīng)過(guò) re.split
之后,splits
的結(jié)果會(huì)是:
['', 'Group1', 'apple\t蘋(píng)果\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)
自動(dòng)為每個(gè)組建立一個(gè)單詞列表。
每個(gè)詞條處理如下邏輯:
- 優(yōu)先使用
\t
制表符分隔; - 若沒(méi)有
\t
,嘗試用空格分隔; - 去掉無(wú)效或空行,確保數(shù)據(jù)干凈整潔。
if "\t" in entry: word, meaning = entry.split("\t", 1) elif " " in entry: parts = entry.split(maxsplit=1) if len(parts) == 2: word, meaning = parts else: continue
這樣處理后,每個(gè)分組會(huì)變成例如:
'Group1': [('apple', '蘋(píng)果'), ('banana', '香蕉')]
4. 寫(xiě)入 Excel 文件,每組一個(gè) 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
寫(xiě)入 Excel。 - 每個(gè)分組作為一個(gè)單獨(dú)的 Sheet 頁(yè)。
- 不寫(xiě)入表頭或行號(hào),使數(shù)據(jù)更加簡(jiǎn)潔。
最終生成的文件結(jié)構(gòu)清晰、美觀(guān),每頁(yè)都是該組的詞匯,便于記憶與分類(lèi)學(xué)習(xí)。
5. 執(zhí)行結(jié)果提示
print(f"轉(zhuǎn)換完成,已保存為:{output_path}")
一個(gè)簡(jiǎn)單但貼心的用戶(hù)提示,方便確認(rèn)處理成功與結(jié)果文件位置。
四、代碼展示:實(shí)用就是最好的美學(xué)
完整代碼如下(可直接運(yùn)行):
import re import pandas as pd from collections import defaultdict with open("四級(jí)單詞.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: continue if "\t" in entry: word, meaning = entry.split("\t", 1) elif " " in entry: parts = entry.split(maxsplit=1) if len(parts) == 2: word, meaning = parts else: continue else: continue grouped_data[group_name].append((word.strip(), meaning.strip())) output_path = "四級(jí)單詞.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"轉(zhuǎn)換完成,已保存為:{output_path}")
五、學(xué)后總結(jié):你收獲了什么?
本腳本涵蓋了多個(gè)關(guān)鍵技能點(diǎn),值得初中級(jí)開(kāi)發(fā)者好好吸收:
- 正則表達(dá)式:熟練使用
re.split()
與re.match()
是文本解析的基礎(chǔ); - 文本清洗:處理不規(guī)則數(shù)據(jù)需要嚴(yán)謹(jǐn)?shù)呐袛嗪皖A(yù)處理;
- 數(shù)據(jù)結(jié)構(gòu)選型:
defaultdict
是處理分組數(shù)據(jù)的神器; - pandas 應(yīng)用:將數(shù)據(jù)寫(xiě)入 Excel 是最常見(jiàn)的自動(dòng)化場(chǎng)景之一;
- 代碼可復(fù)用性強(qiáng):換成詞匯表、筆記數(shù)據(jù)、考試清單都能用!
拓展建議:
- 增加錯(cuò)誤日志,記錄格式不規(guī)范的詞條;
- 支持中文注釋與 Sheet 排序;
- 加入 GUI 界面(如 Tkinter),一鍵操作更直觀(guān)。
通過(guò)這一小項(xiàng)目,你不僅提升了文本處理能力,還掌握了數(shù)據(jù)清洗與文件導(dǎo)出的實(shí)用技巧。記住,編程的價(jià)值在于解決問(wèn)題,而最能讓你成長(zhǎng)的,正是這種“從無(wú)到有”的小工具!
以上就是利用Python將分組文本轉(zhuǎn)為Excel的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于Python文本轉(zhuǎn)為Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python庫(kù)Theano深度神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)訓(xùn)練深入探究
Theano是一個(gè)用于深度學(xué)習(xí)的Python庫(kù),它提供了高效的數(shù)值計(jì)算和自動(dòng)微分功能,使得深度神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)和訓(xùn)練變得更加容易,本文將深入探討Theano的功能和用法,并提供豐富的示例代碼,幫助大家入門(mén)深度學(xué)習(xí)2024-01-01

Python Django框架介紹之模板標(biāo)簽及模板的繼承

python中自帶的三個(gè)裝飾器的實(shí)現(xiàn)

pygame實(shí)現(xiàn)俄羅斯方塊游戲(基礎(chǔ)篇1)