分析文本文件中的数据

时间:2015-01-26 17:50:53

标签: python

我有一个包含如下数据的txt文件:

Kimberly,43,68,176,8
William,42,47,162,15
Dorothy,55,103,160,6
Michael,37,126,133,8,54
...

(4个问题:年龄,身高,体重,运动时间 - 答案是数字,有些数字超过4,并且要通过错误日志处理并忽略并从计算中删除,错误日志报告数据太多或太少的数据)

我有两件事我需要做。一种是打印每个问题的平均值(平均值),格式为:

Question    Average
-------------------------------
1           Value     etc.

问题是我不知道如何从文本文件的一个“列”获取数据。我需要忽略第一列中的名称,然后只使用例如第二栏。

有人可以指导我如何做到这一点吗?并且还有错误处理;我不太清楚该怎么做。

2 个答案:

答案 0 :(得分:2)

希望这会让你开始。我没有接近你的格式或错误检查要求,但是这个脚本提供了第一行的平均值。

如何从一行获取值的答案是创建行列表,然后使用其索引访问所需的列:aRow [theIndexOfTheColumnYouWant]。在此示例中,第[1]行为您提供年龄列中的值。

import csv

with open('text.txt', 'rb') as myFile:
    # create a csv.reader() object
    reader = csv.reader(myFile)
    # instantiate a list to store the values of the first row in
    secondColumnNums = []
    # loop over the reader object, appending each column two ([1]) value to firstLine
    for line in reader:
        secondColumnNums.append(float(line[1]))
    # add secondColumnNums together and divide by how many numbers there are (the mean)
    theMean = sum(secondColumnNums)/len(secondColumnNums)
    print "The mean of the ages (column two) is {}.".format(theMean)

答案 1 :(得分:1)

Python标准库中有csv个模块。

>>> import csv
>>> x='''Kimberly,43,68,176,8
... William,42,47,162,15
... Dorothy,55,103,160,6
... Michael,37,126,133,8,54'''
>>> with open("/tmp/a.csv", "w") as fp:
...  fp.write(x)
... 
>>> with open("/tmp/a.csv") as fp:
...   reader = csv.reader(fp)
...   for row in reader:
...     print(row[1])
... 
43
42
55
37