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]
我想在将 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]