Python - 对从 CSV 文件导入的数组求和

Python - sum an array imported from a CSV file

我想在将 csv 文件放入列表后汇总这些值,我想将它们全部加在一起。清单如下:

'50', '51', '53', '55', '56', '56', '56', '61', '64', '67', '68', '71', '79', '81', '86', '86', '87', '94', '96', '98', '99' 'Score'

代码从 csv 中获取这些值并将值放入列表中

import csv

f=open('IT_Programming_data.csv')

csv_f = csv.reader(f)
score = [] 
for row in csv_f:"score"      
  score.append(row[1])
  a = score
  b = sum(a)
  print (b)
f.close()

当我尝试总结列表时出现错误:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

当你这样做时总和有效:

a = [1,3,4]

b = sum(a)

print (b)

哪个returns'8'

如何使用从 csv 导入的列表,我不知道

您尝试添加会引发 ValueError 的字符串和数字,请尝试使用此代码来处理异常:

import csv

f = open('IT_Programming_data.csv')

csv_f = csv.reader(f)
score = [] 
for row in csv_f:
  try:
    num = int(row[1].strip()) # try to switch type
    score.append(num)
  except Exception,error: # fail to switch, print error
    print(error)

b = sum(score)
print(b)

f.close()

问题是,您的列表条目格式不正确。例如,您可以通过在循环中打印内容来捕获此错误:

import csv

f=open('testlist.csv')
csv_f = csv.reader(f)
score = [] 
for row in csv_f:      
    print(row)
    score.append(int(row[1].strip().strip("'")))

a = score
b = sum(a)

print (b)
f.close()

输出类似于["'50'", " '51'", " '53'", " '55'", " '56'", " '56'", " '56'",..., " '99' 'Score'"] 所以你可以在这里看到你的条目有时以空格开头,并且它们包含额外的“'”。您必须通过删除最后一个条目来清理您的列表,然后您必须删除空格,然后您必须删除额外的“'”。然后,您必须将其全部转换为 int。这是在上面的循环中完成的

尽量不要在循环中使用try-except。这对性能有很大影响,而且看起来真的很不专业,尤其是当有内置的 isdigit().

import csv

f = open('IT_Programming_data.csv')

csv_f = csv.reader(f)
score = [] 
for row in csv_f:
  if row[1].isdigit():
    num = int(row[1]) # try to switch type
    score.append(num)

b = sum(score)
print(b)

f.close()

试试这个:

b= [sum(int(x)) for x in a]