我希望能够使用Python打开.csv
这样的文件:
5,26,42,2,1,6,6
然后对它们执行一些操作,如添加。
total = 0
with open("file.csv") as csv_file:
for row in csv.reader(csv_file, delimiter=','):
for number in range(7):
total += int(row[number])
问题在于,由于.csv
文件只有一行且列数未知,所以我不知道如何在没有硬编码或使用非常难看的代码的情况下完成这项工作。< / p>
有没有办法在Python中使用类似for columns in file
的东西循环遍历列?
答案 0 :(得分:8)
你可以说
for col in row:
total += int(col)
例如:
import csv
from StringIO import StringIO
total = 0
for row in csv.reader(StringIO("1,2,3,4")):
for col in row:
total += int(col)
print total # prints 10
你可以这样做的原因是csv.reader为每一行返回一个简单的列表,所以你可以像在Python中的任何其他列表那样迭代它。
但是,在您的情况下,由于您知道您的文件包含一行以逗号分隔的整数,因此您可以更加简单:
line = open("ints.txt").read().split(",")
total = sum(int(i) for i in line)
答案 1 :(得分:3)
您可以在迭代csv阅读器中的行时迭代列表列表:
total = 0
with open("file.csv") as csv_file:
for row in csv.reader(csv_file, delimiter=','):
for col in row:
total += int(col)
或者你可以在每次传递中添加每一行的总和,并跳过内部循环:
total = 0
with open("file.csv") as csv_file:
for row in csv.reader(csv_file, delimiter=','):
total += sum(map(int, row))
或者您可以使用itertools.imap
代替map
来保存创建额外列表。