使用行标题和列标题对文本文件中的列进行平均

时间:2018-05-30 17:04:43

标签: python parsing

我是小组的新手,也是python的新手。我有一个非常特定类型的输入文件,我正在使用。它是一个带有一个标题行文本的文本文件。此外,还有一列文字会让事情变得更加烦人。我想要做的是读取此文件,然后对数字列(如average,stdev等)执行操作......但是读取文件并解析出文本列会给我带来麻烦。

我玩了许多不同的方法并且接近了,但我想我会在这里联系小组。如果这是matlab我几小时前已经用过了。截至目前,如果我使用固定宽度来定义我的列,我认为它会起作用,但我认为可能有更有效的方式来读取行并正确地忽略字符串。

这是文件格式。如您所见,第一行是标题...因此可以忽略。 第1列包含文字。

postraw.txt

....我想我明白了。我的代码可能很粗糙,但现在可以使用了:

CTlist = []
CLlist = []
CDlist = []
CMZlist = []
LDelist = []
loopout = {'a1':CTlist, 'a2':CLlist, 'a3':CDlist, 'a4':CMZlist, 'a5':LDelist}

#Specifcy number of headerlines
headerlines = 1

#set initial index to 0
i = 0

#begin loop to process input file, avoiding any header lines
with open('post.out', 'r') as file:
    for row in file:
    if i > (headerlines - 1):
     rowvars = row.split()
     for i in range(2,len(rowvars)):
        #print(rowvars[i]) #JUST A CHECK/DEBUG LINE
        loopout['a{0}'.format(i-1)].append(float(rowvars[i]))
    i = i+1

1 个答案:

答案 0 :(得分:0)

CTlist = []
CLlist = []
CDlist = []
CMZlist = []
LDelist = []
loopout = {'a1':CTlist, 'a2':CLlist, 'a3':CDlist, 'a4':CMZlist, 'a5':LDelist}

#Specifcy number of headerlines
headerlines = 1

#set initial index to 0
i = 0

#begin loop to process input file, avoiding any header lines
with open('post.out', 'r') as file:
for row in file:
if i > (headerlines - 1):
 rowvars = row.split()
 for i in range(2,len(rowvars)):
    #print(rowvars[i]) #JUST A CHECK/DEBUG LINE
    loopout['a{0}'.format(i-1)].append(float(rowvars[i]))
i = i+1