文本文件解析和导入置换结果

时间:2014-12-23 20:13:52

标签: python parsing numpy text

我知道cvs模块提供了一种非常好的方法来解析python中的文本文件。我有一个包含以下列的文件:

x y z b

这里,x y z b是浮点数。但是,我面临着以任何可能的方式改变订单权的可能性。例如,文件可能是

b y x z

现在,我想将数据读入一个numpy数组,该数组应该以b x y z格式存储数据。所以,阅读功能应该是这样的:

def read_file(file_path, inputformat='xyzb', delimiter=' '):

现在,我可以查看每一行,并且有一个很大的if / else类型的逻辑,对于四个位置中的每一个,我将查询格式字符,然后将其插入到数组中的相应位置。但是,我想知道是否有更优雅的方式来处理这种排列?

1 个答案:

答案 0 :(得分:2)

我建议使用numpy.loadtxt加载数据(请参阅documentation),然后使用数组切片来更正列顺序。

编辑:实际上,您可以使用usecols参数直接指定所需的列顺序,例如:

import numpy as np

def read_file(file_path, input_format="xyzb", desired_format="bxyz", delimiter=" "):
    usecols = [input_format.index(col) for col in desired_format]
    with open(file_path, "r") as inf:
        return np.loadtxt(inf, usecols=usecols, delimiter=delimiter)