无法将字符串转换为float:“[”不确定为什么会收到此消息。Python

2024-04-26 11:55:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以首先我的代码不能工作,因为我要乘以一个字符串,显然你不能这样做。然后,当打印平均值时,我将“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)

Tags: columns文件csv字符串代码inforline
1条回答
网友
1楼 · 发布于 2024-04-26 11:55:08

看一下float(a),我可以看到a与{}相关。进一步查找,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之类的东西进行隐式类型转换。在尝试乘法之前,必须将字符串值显式设置为整数。在

相关问题 更多 >