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

Python批量处理TXT:删首行、行列转置、按文件名排序合并

原有代码的问题

你写的测试代码缺核心逻辑,根本跑不通:

  • Python原生open()不支持*.txt通配符,没法直接批量读多个文件
  • 只写了跳第一行的逻辑,完全没做行列转置、文件名排序、多文件横向拼接的要求
  • 没处理文件里浮点数之间多空格分隔的格式兼容问题
可用实现

把下面代码放到你存这些txt文件的文件夹里直接运行,就能生成符合预期的output.txt:

import os
import re

# 筛选当前目录下所有符合「数字开头_xxx.txt」规则的文件
target_files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.txt') and re.match(r'^\d+_', f)]
# 按文件名开头的数字做升序排序,转成int比较避免字符串排序出错
sorted_files = sorted(target_files, key=lambda x: int(x.split('_')[0]))

processed_data = []
for file in sorted_files:
    num_list = []
    with open(file, 'r', encoding='utf-8') as f:
        next(f)  # 跳过第一行表头,对应step1要求
        for line in f:
            line = line.strip()
            if not line:
                continue
            # 按空白字符分割,兼容多空格/制表符分隔的浮点数
            num_list.extend(line.split())
    # 每个文件的所有浮点数拉成单列,对应step2行列转换要求
    processed_data.append(num_list)

# 按排序后的顺序横向拼接所有文件内容,写入输出文件,对应step3要求
with open('output.txt', 'w', encoding='utf-8') as f_out:
    for row_items in zip(*processed_data):
        # 列之间用制表符分隔,和示例输出格式对齐
        f_out.write('\t'.join(row_items) + '\n')
逻辑说明
  • 删第一行:读每个文件时直接跳过第一行,不纳入后续处理
  • 行列转换:把每个文件里所有行的浮点数按顺序拼成一个长列表,相当于把原来的多行多列数据转成单列
  • 排序拼接:提取文件名开头的数字转成整数排序,避免字符串排序把2排在10后面的问题,最后把所有文件的单列数据逐行对齐拼接,得到最终的横向合并结果。

内容的提问来源于stack exchange,提问作者viraj moil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:15:42