无法将字符串转换为浮点数:' [' - 不确定我收到此消息的原因。 - Python

时间:2015-04-23 19:01:59

标签: python csv

所以首先我的代码没有工作,因为我是一个字符串,显然你不能这样做。然后我改变了#34; a"在打印平均值时进入浮点数。但是现在我收到了这个错误,我真的不确定。这段背景信息代码是从CSV文件中提取数据,分数为3列,我试图找到平均值。但是,CSV文件都是字符串,并且您不能将整数作为CSV文件中的值。所以任何帮助都会非常感激。

这是我的csv文件: 卡勒姆,2,0,2

这是我的代码:

            with open("Class1.csv") as f:
                columns = f.readline().strip().split(" ")
                numRows = 0
                sums = [1] * len(columns)

                for line in f:
                # Skip empty lines
                    if not line.strip():
                        continue

                values = line.split(" ")
                for i in range(1,len(values)):

                    sums[i] += int(values[i])
                    numRows += 1

                for index, a in enumerate (str(sums)):
                    print (columns[index], 1.0 * float(a) / numRows)

1 个答案:

答案 0 :(得分:1)

查看float(a),我可以看到astr(sums)有关。进一步查看,sums是包含重复的整数1的列表。所以:

>>> sums = [1, 1, 1, 1, 1]
>>> d = str(sums)
>>> d
'[1, 1, 1, 1, 1]'
>>> type(d)
<type 'str'>
>>> d[0]
'['
>>> float(d[0])

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    float(d[0])
ValueError: could not convert string to float: [

问题在于您正在执行str(sums),它会为您提供包含列表结构的字符串字符表示的字符串...包括用于指示列表的[]。这就是您收到错误的原因。

最后,请注意,虽然Python是动态类型的,但它也是类型。它不会像'5' * 2那样进行隐式类型转换。在尝试乘法之前,必须明确地将字符串值设为整数。