如何从测试文件的列中获取元素

时间:2019-02-21 20:49:48

标签: python

如果我的文本文件格式如下:

第1栏第2栏第3

熊5 10

乌龟7 5

蛇9 7

大猩猩10 8

目标是根据函数指定的参数值来计算第2列或第3列的标准偏差。我知道如何计算标准偏差,所以问题是如何指定要使用的列以及如何将文本文件中的这些值以列形式输入/输入到STD公式中?

到目前为止,我的代码:

with open('file.txt','r') as f:
   for line in f:
      line = line.strip().split(" ")
      print (line) 

所有这些操作就是将每个条目拆分为一个列表。但是我不知道如何索引每个列表的第二个元素并将它们加在一起。它不会让我

2 个答案:

答案 0 :(得分:1)

from statistics import stdev


def sd(d, column):
    """Calculates SD. Given column can be 0 or 1"""
    return stdev([d[k][column] for k in d.keys()])


d = {}
with open("test.txt") as f:
    for line in f:
        line = line.strip().split()
        if line:
            d[line[0]] = (int(line[1]), int(line[2]))

calculated_sd = sd(d, 0)

这应该有效。该函数的参数列可以为0或1。
我要做的是读取文件并将信息存储到字典中,其中每个动物都是键,而各列是与该动物的键关联的元组。
顺便说一句,您应该先尝试对方法进行编码,然后如果不起作用,请在此处询问,而不是直接询问代码。

答案 1 :(得分:0)

如果您知道如何计算标准偏差,我想您所需要的只是提取值。编辑一下您的代码:

lambda

这是您可以在代码中实现的功能。 def getcolumn(filename, idx): cval = [] with open(filename,'r') as f: for line in f: cval.append(line.strip().split()[idx]) return cval 是带有文件名的字符串,filename是要提取的列的索引(记住索引从0开始)。
idx是在列表中转换的行,因此足以插入要获取元素的列的索引并将其附加到line.strip().split()

调用函数:

cval

values = getcolumn('file.txt', 1) 是一个列表,其中包含文本文件第1列的值。您可以使用它来计算标准偏差。