首页 > 解决方案 > 平均具有行和列标题的文本文件中的列

问题描述

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

我已经尝试了许多不同的方法并且很接近,但我想我会联系这里的团队。如果这是 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

标签: pythonparsing

解决方案


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

推荐阅读