【发布时间】:2015-06-25 23:36:48
【问题描述】:
import csv
with open('scores.csv') as handle:
reader = csv.reader(handle)
for row in list(reader)[1:]:
user, *scores = row
average = sum([int(score) for score in scores]) / len(scores)
print (
"{user} has average of {average}".format(user=user,average=average)
)
由于 *scores,此代码在 python 2.7 中不起作用。我不知道如何将其更改为 python 2.7?
此代码取自此线程:Row Average CSV Python
【问题讨论】:
-
您还需要调整
average行。在 Python 3 中,/是“真正的除法”,但在 Python 2 中不是——结果将被截断为整数。最简单的方法是先将其中一个值转换为float。 -
请注意,使用
list(reader)[1:]效率非常低,因为它将文件中的所有内容都拉到一个列表中。在单独的行上使用next(reader, None),然后使用for row in reader:;这将从 CSV 中读取一行并将其丢弃,从而有效地跳过该行。见Skip the headers when editing a csv file using Python
标签: python python-2.7 csv