我有一个包含如下数据的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.
问题是我不知道如何从文本文件的一个“列”获取数据。我需要忽略第一列中的名称,然后只使用例如第二栏。
有人可以指导我如何做到这一点吗?并且还有错误处理;我不太清楚该怎么做。
答案 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