Python結(jié)合Free Spire.XLS庫(kù)實(shí)現(xiàn)TXT到CSV的高效轉(zhuǎn)換
引言
在數(shù)據(jù)處理、數(shù)據(jù)分析或報(bào)表生成場(chǎng)景中,TXT 文本文件因格式靈活被廣泛使用,但 CSV 格式憑借結(jié)構(gòu)化、易被 Excel/Pandas/數(shù)據(jù)庫(kù)解析的優(yōu)勢(shì),成為數(shù)據(jù)交互的主流選擇。本文將分享如何用 Python 結(jié)合 Free Spire.XLS 庫(kù)實(shí)現(xiàn) TXT 到 CSV 的高效轉(zhuǎn)換,覆蓋基礎(chǔ)轉(zhuǎn)換、自定義分隔符、亂碼解決等核心場(chǎng)景,零基礎(chǔ)也能快速上手。
一、環(huán)境準(zhǔn)備:安裝免費(fèi) Python 庫(kù)
Free Spire.XLS for Python是一款免費(fèi)的Excel/CSV處理庫(kù),無(wú)需安裝Microsoft Excel即可實(shí)現(xiàn)文件格式轉(zhuǎn)換、數(shù)據(jù)讀寫等操作,但有一定篇幅限制。
1.1 pip 安裝命令
通過pip快速安裝,兼容Python 3.6及以上版本:
pip install Spire.Xls.Free
1.2 安裝常見問題解決
若安裝失敗,可嘗試以下方案:
- 升級(jí)pip:
python -m pip install --upgrade pip; - 手動(dòng)下載
whl文件安裝(官網(wǎng)地址)。
二、基礎(chǔ)實(shí)現(xiàn):TXT 轉(zhuǎn) CSV(逗號(hào)分隔)
2.1 場(chǎng)景說明
假設(shè)待轉(zhuǎn)換的 data.txt 文件內(nèi)容如下(逗號(hào)分隔):
姓名,年齡,城市,職業(yè) 張三,25,北京,程序員 李四,30,上海,產(chǎn)品經(jīng)理 王五,28,廣州,設(shè)計(jì)師
2.2 Python 代碼實(shí)現(xiàn)
from spire.xls import *
from spire.xls.common import *
def txt_to_csv_basic(txt_path, csv_path):
# 1. 創(chuàng)建Workbook對(duì)象
workbook = Workbook()
# 2. 獲取第一張工作表
worksheet = workbook.Worksheets[0]
# 3. 讀取TXT文件內(nèi)容
with open(txt_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
# 4. 將TXT內(nèi)容寫入工作表
row_index = 1 # Spire.XLS行索引從1開始
for line in lines:
# 去除換行符并按逗號(hào)分割
row_data = line.strip().split(',')
col_index = 1
for cell_value in row_data:
# 寫入單元格
worksheet.Range[row_index, col_index].Text = cell_value
col_index += 1
row_index += 1
# 5. 保存為CSV文件
workbook.SaveToFile(csv_path, FileFormat.CSV)
workbook.Dispose()
print(f"基礎(chǔ)轉(zhuǎn)換完成!CSV文件已保存至:{csv_path}")
# 調(diào)用函數(shù)
if __name__ == "__main__":
txt_file = "data.txt"
csv_file = "output_basic.csv"
txt_to_csv_basic(txt_file, csv_file)
轉(zhuǎn)換后的 CSV 文件:

2.3 代碼解析
Workbook():創(chuàng)建 Excel 工作簿對(duì)象,是 Free Spire.XLS 的核心入口;Worksheets[]:獲取指定工作表用于存儲(chǔ) TXT 數(shù)據(jù);- 讀取 TXT 后按行分割,逐單元格寫入工作表;
SaveToFile():指定FileFormat.CSV即可將工作表導(dǎo)出為 CSV 格式。
三、進(jìn)階場(chǎng)景:自定義分隔符/亂碼處理
場(chǎng)景1:TXT 文件為制表符(\t)分隔
若 data_tab.txt 內(nèi)容為制表符分隔:
姓名 年齡 城市 職業(yè) 張三 25 北京 程序員 李四 30 上海 產(chǎn)品經(jīng)理
只需修改分割符為 \t,代碼如下:
from spire.xls import *
from spire.xls.common import *
def txt_to_csv_tab_separator(txt_path, csv_path):
workbook = Workbook()
worksheet = workbook.Worksheets[0]
with open(txt_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
row_index = 1
for line in lines:
row_data = line.strip().split('\t') # 按制表符分割
col_index = 1
for cell_value in row_data:
worksheet.Range[row_index, col_index].Text = cell_value
col_index += 1
row_index += 1
workbook.SaveToFile(csv_path, FileFormat.CSV)
workbook.Dispose()
print(f"制表符分隔轉(zhuǎn)換完成!文件路徑:{csv_path}")
# 調(diào)用
txt_to_csv_tab_separator("data_tab.txt", "output_tab.csv")
場(chǎng)景2:解決 TXT 轉(zhuǎn) CSV 亂碼問題
若 TXT 文件編碼為 GBK/GB2312,讀取時(shí)指定對(duì)應(yīng)編碼即可:
# 僅修改讀取TXT的編碼參數(shù)
with open(txt_path, 'r', encoding='gbk') as f: # 替換為gb2312/utf-8-sig(含BOM)
lines = f.readlines()
四、常見問題與解決方案
| 問題現(xiàn)象 | 原因分析 | 解決方案 |
|---|---|---|
| CSV 文件打開后數(shù)據(jù)錯(cuò)位 | TXT 分隔符不統(tǒng)一 | 統(tǒng)一分隔符(如替換所有空格為逗號(hào)) |
| 轉(zhuǎn)換后中文顯示為亂碼 | 編碼不匹配 | 讀取 TXT 時(shí)指定正確編碼(UTF-8/GBK/GB2312) |
| 大文件轉(zhuǎn)換卡頓/崩潰 | 一次性讀取全部?jī)?nèi)容 | 采用分批讀取+寫入的方式 |
| FreeSpire 模塊導(dǎo)入失敗 | 安裝不完整 | 重新安裝或手動(dòng)下載 whl 文件 |
五、擴(kuò)展應(yīng)用:批量轉(zhuǎn)換多個(gè) TXT 文件
若需批量轉(zhuǎn)換文件夾下所有 TXT 文件為 CSV,可結(jié)合 os 模塊實(shí)現(xiàn):
import os
def batch_txt_to_csv(txt_folder, csv_folder):
# 創(chuàng)建CSV文件夾(若不存在)
if not os.path.exists(csv_folder):
os.makedirs(csv_folder)
# 遍歷TXT文件夾
for file_name in os.listdir(txt_folder):
if file_name.endswith(".txt"):
txt_path = os.path.join(txt_folder, file_name)
# 生成CSV文件名(替換后綴)
csv_name = file_name.replace(".txt", ".csv")
csv_path = os.path.join(csv_folder, csv_name)
# 調(diào)用基礎(chǔ)轉(zhuǎn)換函數(shù)
txt_to_csv_basic(txt_path, csv_path)
print(f"批量轉(zhuǎn)換完成!所有CSV文件已保存至:{csv_folder}")
# 調(diào)用(轉(zhuǎn)換txt_files文件夾下所有TXT,保存到csv_files文件夾)
batch_txt_to_csv("txt_files", "csv_files")
本文基于 Free Spire.XLS for Python 免費(fèi)庫(kù)實(shí)現(xiàn)了 TXT 到 CSV 的全場(chǎng)景轉(zhuǎn)換,包括基礎(chǔ)轉(zhuǎn)換、自定義分隔符、亂碼解決及批量轉(zhuǎn)換,相比傳統(tǒng)方法更簡(jiǎn)潔、穩(wěn)定。Free Spire.XLS for Python 不僅支持 TXT 轉(zhuǎn) CSV,還可實(shí)現(xiàn) CSV 轉(zhuǎn) Excel、Excel 轉(zhuǎn) TXT 等格式互轉(zhuǎn),滿足數(shù)據(jù)處理的多樣化需求。
以上就是Python結(jié)合Free Spire.XLS庫(kù)實(shí)現(xiàn)TXT到CSV的高效轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Python TXT轉(zhuǎn)為CSV格式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
YOLOv5改進(jìn)系列之增加小目標(biāo)檢測(cè)層
yolov5出來(lái)已經(jīng)很長(zhǎng)時(shí)間了,所以有關(guān)yolov5的一些詳細(xì)介紹在這里就不一一介紹了,下面這篇文章主要給大家介紹了關(guān)于YOLOv5改進(jìn)系列之增加小目標(biāo)檢測(cè)層的相關(guān)資料,需要的朋友可以參考下2022-09-09
flask中獲取各種請(qǐng)求數(shù)據(jù)的常見方法小結(jié)
在 Flask 里,能使用多種方法獲取不同類型的請(qǐng)求數(shù)據(jù),這篇文章為大家詳細(xì)介紹了Flask中常見請(qǐng)求數(shù)據(jù)的獲取方式,有需要的小伙伴可以參考一下2025-06-06
Python?matplotlib繪制散點(diǎn)圖配置(萬(wàn)能模板案例)
這篇文章主要介紹了Python?matplotlib繪制散點(diǎn)圖配置(萬(wàn)能模板案例),散點(diǎn)圖是指在??回歸分析???中,數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的?分布圖???,散點(diǎn)圖表示因變量隨??自變量???而?變化???的大致趨勢(shì),據(jù)此可以選擇合適的函數(shù)??對(duì)數(shù)???據(jù)點(diǎn)進(jìn)行?擬合2022-07-07
GDAL 矢量屬性數(shù)據(jù)修改方式(python)
這篇文章主要介紹了GDAL 矢量屬性數(shù)據(jù)修改方式(python),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-03-03
Python基于pyopencv人臉識(shí)別并繪制GUI界面
本文詳細(xì)講解了Python基于pyopencv人臉識(shí)別并繪制GUI界面,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
python實(shí)現(xiàn)數(shù)據(jù)分析與建模
這篇文章主要介紹了python實(shí)現(xiàn)數(shù)據(jù)分析與建模功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
使用Python實(shí)現(xiàn)照片按照日期自動(dòng)分類的操作指南
最近準(zhǔn)備把近幾年手機(jī)里面存儲(chǔ)的照片按年份分類存儲(chǔ)到硬盤里面,不知不覺累積了4000多張照片,人工一張張分類實(shí)在是太費(fèi)時(shí)間、也容易出錯(cuò),所以本文給大家介紹了使用Python實(shí)現(xiàn)照片按照日期自動(dòng)分類的操作指南,需要的朋友可以參考下2025-08-08
Python讀取Nacos配置時(shí)設(shè)置命名空間的方法步驟
這篇文章主要介紹了Nacos配置管理的命名空間原理、Python端配置步驟、最佳實(shí)踐以及常見問題解決方案,強(qiáng)調(diào)通過合理命名空間與動(dòng)態(tài)配置機(jī)制,實(shí)現(xiàn)多環(huán)境隔離和高效運(yùn)維管理,需要的朋友可以參考下2025-10-10
python使用writerows寫csv文件產(chǎn)生多余空行的處理方法
這篇文章主要介紹了python使用writerows寫csv文件產(chǎn)生多余空行的處理方法,需要的朋友可以參考下2019-08-08
python wordcloud庫(kù)實(shí)例講解使用方法
這篇文章主要介紹了python wordcloud庫(kù)實(shí)例,詞云通過以詞語(yǔ)為基本單位,更加直觀和藝術(shù)地展示文本。wordcloud是優(yōu)秀的詞云展示的python第三方庫(kù)2022-12-12

