ValueError:无法将字符串转换为float:id

发布于 2021-01-29 15:06:06

我正在运行以下python脚本:

#!/usr/bin/python

import os,sys
from scipy import stats
import numpy as np

f=open('data2.txt', 'r').readlines()
N=len(f)-1
for i in range(0,N):
    w=f[i].split()
    l1=w[1:8]
    l2=w[8:15]
    list1=[float(x) for x in l1]
    list2=[float(x) for x in l2]
    result=stats.ttest_ind(list1,list2)
    print result[1]

但是我得到了类似的错误:

ValueError: could not convert string to float: id

我对此感到困惑。当我在交互式部分中仅尝试一行时,而不是使用脚本进行for循环时:

>>> from scipy import stats
>>> import numpy as np
>>> f=open('data2.txt','r').readlines()
>>> w=f[1].split()
>>> l1=w[1:8]
>>> l2=w[8:15]
>>> list1=[float(x) for x in l1]
>>> list1
[5.3209183842, 4.6422726719, 4.3788135547, 5.9299061614, 5.9331108706, 5.0287087832, 4.57...]

它运作良好。

有人可以解释一下吗?谢谢。

关注者
0
被浏览
94
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    显然,您的某些行没有有效的float数据,特别是某些行的文本id无法转换为float。

    当您在交互式提示中尝试它时,您仅尝试第一行,因此最好的方法是在出现此错误的地方打印行,您将知道错误的行,例如

    #!/usr/bin/python
    
    import os,sys
    from scipy import stats
    import numpy as np
    
    f=open('data2.txt', 'r').readlines()
    N=len(f)-1
    for i in range(0,N):
        w=f[i].split()
        l1=w[1:8]
        l2=w[8:15]
        try:
            list1=[float(x) for x in l1]
            list2=[float(x) for x in l2]
        except ValueError,e:
            print "error",e,"on line",i
        result=stats.ttest_ind(list1,list2)
        print result[1]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看