我正在尝试编写一些代码来分析.csv文件,然后将文件每一行的数字平均值作为列表返回。
这是我的代码,但是出现了我不理解的错误!
def mean(values):
return sum(values) / len(values)
def line_averages(filename):
""" compute the average value for every line, and return the average
values in a list in the file "filename" """
f = open(filename, "r")
x = f.read()
f.close()
no_lines = x.split('\n') # remove lines
means = []
for i in no_lines:
no_commas = i.split(',') # remove commas
means.append(mean(no_commas))
return means
数据的示例文件是:
1,2
1,1,1,1
-1,0,1
42,17
最好用csv
模块来完成。您可以使用将csv.reader
文件对象作为参数且默认分隔符为逗号的方法:
这是对对象使用列表理解的一种方法csv.reader
:
import csv
def line_averages(filename):
with open(filename) as f:
reader = csv.reader(f)
means = [sum(map(float, row))/len(row) for row in reader]
return means
该with
语句将在上下文中打开文件,并在我们移出该上下文后自动关闭该文件。您可以包装列表组件。在try/except
该手柄ZeroDivisionError
应该万一有与您的文件长度为零行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句