Python结合Free Spire.XLS库实现TXT到CSV的高效转换
引言
在数据处理、数据分析或报表生成场景中,TXT 文本文件因格式灵活被广泛使用,但 CSV 格式凭借结构化、易被 Excel/Pandas/数据库解析的优势,成为数据交互的主流选择。本文将分享如何用 Python 结合 Free Spire.XLS 库实现 TXT 到 CSV 的高效转换,覆盖基础转换、自定义分隔符、乱码解决等核心场景,零基础也能快速上手。
一、环境准备:安装免费 Python 库
Free Spire.XLS for Python是一款免费的Excel/CSV处理库,无需安装Microsoft Excel即可实现文件格式转换、数据读写等操作,但有一定篇幅限制。
1.1 pip 安装命令
通过pip快速安装,兼容Python 3.6及以上版本:
pip install Spire.Xls.Free
1.2 安装常见问题解决
若安装失败,可尝试以下方案:
- 升级pip:
python -m pip install --upgrade pip; - 手动下载
whl文件安装(官网地址)。
二、基础实现:TXT 转 CSV(逗号分隔)
2.1 场景说明
假设待转换的 data.txt 文件内容如下(逗号分隔):
姓名,年龄,城市,职业 张三,25,北京,程序员 李四,30,上海,产品经理 王五,28,广州,设计师
2.2 Python 代码实现
from spire.xls import *
from spire.xls.common import *
def txt_to_csv_basic(txt_path, csv_path):
# 1. 创建Workbook对象
workbook = Workbook()
# 2. 获取第一张工作表
worksheet = workbook.Worksheets[0]
# 3. 读取TXT文件内容
with open(txt_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
# 4. 将TXT内容写入工作表
row_index = 1 # Spire.XLS行索引从1开始
for line in lines:
# 去除换行符并按逗号分割
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"基础转换完成!CSV文件已保存至:{csv_path}")
# 调用函数
if __name__ == "__main__":
txt_file = "data.txt"
csv_file = "output_basic.csv"
txt_to_csv_basic(txt_file, csv_file)
转换后的 CSV 文件:

2.3 代码解析
Workbook():创建 Excel 工作簿对象,是 Free Spire.XLS 的核心入口;Worksheets[]:获取指定工作表用于存储 TXT 数据;- 读取 TXT 后按行分割,逐单元格写入工作表;
SaveToFile():指定FileFormat.CSV即可将工作表导出为 CSV 格式。
三、进阶场景:自定义分隔符/乱码处理
场景1:TXT 文件为制表符(\t)分隔
若 data_tab.txt 内容为制表符分隔:
姓名 年龄 城市 职业 张三 25 北京 程序员 李四 30 上海 产品经理
只需修改分割符为 \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"制表符分隔转换完成!文件路径:{csv_path}")
# 调用
txt_to_csv_tab_separator("data_tab.txt", "output_tab.csv")
场景2:解决 TXT 转 CSV 乱码问题
若 TXT 文件编码为 GBK/GB2312,读取时指定对应编码即可:
# 仅修改读取TXT的编码参数
with open(txt_path, 'r', encoding='gbk') as f: # 替换为gb2312/utf-8-sig(含BOM)
lines = f.readlines()
四、常见问题与解决方案
| 问题现象 | 原因分析 | 解决方案 |
|---|---|---|
| CSV 文件打开后数据错位 | TXT 分隔符不统一 | 统一分隔符(如替换所有空格为逗号) |
| 转换后中文显示为乱码 | 编码不匹配 | 读取 TXT 时指定正确编码(UTF-8/GBK/GB2312) |
| 大文件转换卡顿/崩溃 | 一次性读取全部内容 | 采用分批读取+写入的方式 |
| FreeSpire 模块导入失败 | 安装不完整 | 重新安装或手动下载 whl 文件 |
五、扩展应用:批量转换多个 TXT 文件
若需批量转换文件夹下所有 TXT 文件为 CSV,可结合 os 模块实现:
import os
def batch_txt_to_csv(txt_folder, csv_folder):
# 创建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)
# 调用基础转换函数
txt_to_csv_basic(txt_path, csv_path)
print(f"批量转换完成!所有CSV文件已保存至:{csv_folder}")
# 调用(转换txt_files文件夹下所有TXT,保存到csv_files文件夹)
batch_txt_to_csv("txt_files", "csv_files")
本文基于 Free Spire.XLS for Python 免费库实现了 TXT 到 CSV 的全场景转换,包括基础转换、自定义分隔符、乱码解决及批量转换,相比传统方法更简洁、稳定。Free Spire.XLS for Python 不仅支持 TXT 转 CSV,还可实现 CSV 转 Excel、Excel 转 TXT 等格式互转,满足数据处理的多样化需求。
以上就是Python结合Free Spire.XLS库实现TXT到CSV的高效转换的详细内容,更多关于Python TXT转为CSV格式的资料请关注脚本之家其它相关文章!
相关文章
Python hexstring-list-str之间的转换方法
今天小编就为大家分享一篇Python hexstring-list-str之间的转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-06-06


最新评论