将数据文件解析为二维数组

时间:2015-10-28 00:52:31

标签: python arrays file parsing

我正在使用Python解析文件,所有文件看起来都像这样:

100
3
(5.0000, 0.0000, 3.5000, 501.0000)
(4.8831, 1.0749, 3.4416, 23.2251)
(4.5379, 2.0994, 3.2689, 12.6309)

第一个值是数据点的数量,第二个值是某种类型的标志,其余值是数据点。

到目前为止,我已经能够使用以下方法将所有文件数据解析到数组中:

lines = tuple(open(str(sys.argv[1]) , 'r')

但是我遇到麻烦的地方是在我将数据放入该数组后解析数据。

我正在尝试创建一个数组,该数组仅包含前两行之后的数据,这两行仅包含不带(,)的二维数组中的数字只是数字数据。

编辑:我应该提一下,数据不必是十进制数,也可以是一个整数。

2 个答案:

答案 0 :(得分:3)

skip = 2
with open('path/to/infile') as infile:
    for _ in range(skip):
        infile.readline()
    answer = [[float(num) for num in line.strip()[1:-1].split(',')] for line in infile]

答案 1 :(得分:1)

好的,所以你现在这样做的方式很麻烦,一般都不行。

尝试这样的事情:

filename = sys.argv[1] #no need to str(), it's already one
array = [] #initialize empty
with open(filename) as f: #automatically closes file
    next(f) #ignore first line
    flag = next(f) # get next line. maybe int() it?
    for line in f: #for remaining file:
        noparens = line[1:-2] #remove first and last character (and newline too)
        numbers = map(float, noparens.split(","))) #split and convert to float
        array.append(list(numbers)) #append array to outer array