Python 2.7 用Python对csv列求和;整数和字符串的问题
我在using reader中读取了一个csv文件,需要得到每列的总数。我关注了stackexchange上的几个线程,并获得了以下代码:Python 2.7 用Python对csv列求和;整数和字符串的问题,python-2.7,csv,Python 2.7,Csv,我在using reader中读取了一个csv文件,需要得到每列的总数。我关注了stackexchange上的几个线程,并获得了以下代码: with open ("column_formatted.csv") as csvfile2: csv_f2 = csv.reader(csvfile2, delimiter=',') for row in csv_f2: print row[1] print sum(row[1]) 第一个print语句的输
with open ("column_formatted.csv") as csvfile2:
csv_f2 = csv.reader(csvfile2, delimiter=',')
for row in csv_f2:
print row[1]
print sum(row[1])
第一个print语句的输出显示数据如下:
43.0
60.0
10.0
但print&sum函数会产生以下错误:
TypeError:不支持+:'int'和'str'的操作数类型
我尝试使用以下命令转换为整数:
print sum(int(row[1]))
但这一次我得到了一个错误:
ValueError:基数为10的int()的文本无效:“43.0”
我不知道该如何处理这些信息才能得到每列的总数。任何帮助都会非常好,
谢谢我对csv模块不是很熟悉,但我认为您的问题在于
行[1]
实际上是一个字符串。在转换为int
之前,可以使用float
:
>>> a='1.0'
>>> int(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.0'
>>> float(a)
1.0
>>> int(float(a))
1
谢谢,这帮我找到了问题所在。我的.csv文件底部有一个空行,这让一切都很不好。再次感谢!
>>> with open("f") as f:
... c = csv.reader(f, delimiter=',')
... some_var = 0
... some_list = []
... for r in c:
... some_var += int(float(r[1]))
... some_list.append(int(float(r[1])))
...
>>> some_var
6
>>> sum(some_list)
6