Python结合FreeSpire.XLS库实现TXT到CSV的高效转换

Written by

in

文章目录
  • 在数据处理、数据分析或报表生成场景中,TXT 文本文件因格式灵活被广泛使用,但 CSV 格式凭借结构化、易被 Excel/Pandas/数据库解析的优势,成为数据交互的主流选择。本文将分享如何用 Python 结合 Free Spire.XLS 库实现 TXT 到 CSV 的高效转换,覆盖基础转换、自定义分隔符、乱码解决等核心场景,零基础也能快速上手。
  • Free Spire.XLS for Python是一款免费的Excel/CSV处理库,无需安装Microsoft Excel即可实现文件格式转换、数据读写等操作,但有一定篇幅限制。
  • 问题现象 原因分析 解决方案 CSV 文件打开后数据错位 TXT 分隔符不统一 统一分隔符(如替换所有空格为逗号) 转换后中文显示为乱码 编码不匹配 读取 TXT 时指定正确编码(UTF-8/GBK/GB2312) 大文件转换卡顿/崩溃 一次性读取全部内容 采用分批读取+写入的方式 FreeSpire 模块导入失败 安装不完整 重新安装或手动下载 whl 文件
  • 若需批量转换文件夹下所有 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中将txt文件转换为csv文件的三种方法举例 python读取csv和txt数据转换成向量的实例 python 快速把超大txt文件转存为csv的实例 python 循环读取txt文档 并转换成csv的方法
  • 目录
    • 引言
    • 一、环境准备:安装免费 Python 库
      • 1.1 pip 安装命令
      • 1.2 安装常见问题解决
    • 二、基础实现:TXT 转 CSV(逗号分隔)
      • 2.1 场景说明
      • 2.2 Python 代码实现
      • 2.3 代码解析
    • 三、进阶场景:自定义分隔符/乱码处理
      • 场景1:TXT 文件为制表符(t)分隔
      • 场景2:解决 TXT 转 CSV 乱码问题
    • 四、常见问题与解决方案
      • 五、扩展应用:批量转换多个 TXT 文件

        在数据处理、数据分析或报表生成场景中,TXT 文本文件因格式灵活被广泛使用,但 CSV 格式凭借结构化、易被 Excel/Pandas/数据库解析的优势,成为数据交互的主流选择。本文将分享如何用 Python 结合 Free Spire.XLS 库实现 TXT 到 CSV 的高效转换,覆盖基础转换、自定义分隔符、乱码解决等核心场景,零基础也能快速上手。

        Free Spire.XLS for Python是一款免费的Excel/CSV处理库,无需安装Microsoft Excel即可实现文件格式转换、数据读写等操作,但有一定篇幅限制。

        通过pip快速安装,兼容Python 3.6及以上版本:

        pip install Spire.Xls.Free
        

        若安装失败,可尝试以下方案:

        • 升级pip:python -m pip install --upgrade pip
        • 手动下载 whl 文件安装(官网地址)。

        假设待转换的 data.txt 文件内容如下(逗号分隔):

        姓名,年龄,城市,职业
        张三,25,北京,程序员
        李四,30,上海,产品经理
        王五,28,广州,设计师
        

        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 文件:

        • Workbook():创建 Excel 工作簿对象,是 Free Spire.XLS 的核心入口;
        • Worksheets[]:获取指定工作表用于存储 TXT 数据;
        • 读取 TXT 后按行分割,逐单元格写入工作表;
        • SaveToFile():指定 FileFormat.CSV 即可将工作表导出为 CSV 格式。

        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")
        

        若 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 文件为 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中将txt文件转换为csv文件的三种方法举例
        • python读取csv和txt数据转换成向量的实例
        • python 快速把超大txt文件转存为csv的实例
        • python 循环读取txt文档 并转换成csv的方法

        站内搜索