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

如何将多个文本文件指定列分别存入CSV的不同列?

解决方案

直接修改两处核心逻辑即可实现需求,以下是修正后的完整代码:

#!/usr/bin/python3
import numpy as np

def read_csv(file_path):
    with open(file_path, "r") as f:
        lines = f.readlines()
    return lines[5025:]  # 跳过前5025行,取剩余所有行

def extract_second_column(file_path):
    lines = read_csv(file_path)
    second_col = []
    for elem in lines:
        parts = elem.split()
        # 避免空行或格式错误引发索引越界
        if len(parts) >= 2:
            second_col.append(float(parts[1]))
    return second_col

def combined_array(file_path_list):
    all_values = []
    for file_path in file_path_list:
        col_data = extract_second_column(file_path)
        all_values.append(col_data)
    # 将列数据转置为行数据,使每个文件对应CSV的一列
    return np.array(all_values).T

def write_csv(data, csv_name ):
    # 使用逗号作为列分隔符,符合标准CSV格式
    np.savetxt(csv_name, data, delimiter=",")
        
# 执行逻辑
file_name_list = ["GLN-46_Coul.xvg","GLN-46_LJ.xvg","GLU-102_Coul.xvg","GLU-102_LJ.xvg"]
data = combined_array(file_name_list)
write_csv(data, "ENERGIES.csv")

关键修改说明

  • 数组转置:在combined_array中,将收集到的列数据通过np.array(all_values).T转置,把原本的「4个列数据」转换为「N行4列」的结构,这样每一行对应所有文件的同位置数据,保存后每个文件的数据会成为CSV的独立列。
  • 分隔符调整:write_csv中将delimiter="\n"改为delimiter=",",让numpy用逗号分隔列,生成标准的多列CSV文件。
  • 容错处理:在提取第二列时增加if len(parts) >=2判断,避免文件中出现空行或格式异常导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:24:32