You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将TXT文件转换为制表符分隔的Excel文件

你遇到的输出为空、打开报错的问题,核心是两个常见原因:一是分隔符判断不准导致读取数据为空,二是100万行数据刚好接近xlsx单sheet最大1048576行的阈值,常规写入方法容易溢出报错。

前置说明

你描述的「按一次退格键两列贴合」的特征,基本可以确认分隔符是制表符\t,下面的方案也会加入自动识别分隔符的逻辑,避免手动判断出错。

依赖安装

使用pandas+xlsxwriter实现大文件稳定写入,执行以下命令安装依赖:
pip install pandas xlsxwriter

完整实现代码

import pandas as pd
import csv

# 自动识别文件分隔符
def detect_delimiter(file_path, sample_count=10):
    with open(file_path, 'r', encoding='utf-8') as f:
        sample = ''.join([f.readline() for _ in range(sample_count)])
    return csv.Sniffer().sniff(sample).delimiter

# 配置参数,替换为你自己的文件路径
INPUT_TXT = "你的源文件.txt"
OUTPUT_EXCEL = "转换结果.xlsx"
# xlsx单sheet最大支持1048576行,预留1行余量
MAX_SHEET_ROWS = 1048575

# 读取TXT内容,大文件分块读取避免内存溢出
delimiter = detect_delimiter(INPUT_TXT)
# 手动指定分隔符可替换为 delimiter = '\t'
data_chunks = pd.read_csv(
    INPUT_TXT,
    sep=delimiter,
    header=None,
    chunksize=20000,
    skipinitialspace=True,
    on_bad_lines='skip'
)
full_data = pd.concat(data_chunks, ignore_index=True)

# 写入Excel,超行数自动拆分多个sheet
with pd.ExcelWriter(OUTPUT_EXCEL, engine='xlsxwriter') as writer:
    total_rows = len(full_data)
    if total_rows <= MAX_SHEET_ROWS:
        full_data.to_excel(writer, sheet_name='数据', index=False, header=False)
    else:
        for idx, start in enumerate(range(0, total_rows, MAX_SHEET_ROWS), 1):
            end = start + MAX_SHEET_ROWS
            full_data.iloc[start:end].to_excel(
                writer,
                sheet_name=f'数据_{idx}',
                index=False,
                header=False
            )

异常排查

  • 编码报错:把读取文件的encoding='utf-8'替换为encoding='gbk'或encoding='latin-1'重试
  • 内存不足:取消full_data的合并逻辑,直接将每个读取到的chunk依次写入Excel即可
  • 分隔符识别错误:删除自动识别逻辑,手动设置delimiter = '\t'即可

内容的提问来源于stack exchange,提问作者Ahmet Bilgin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:27:06