ValueError:无法将字符串转换为浮点数:id

2022-01-09 00:00:00 python string floating-point

问题描述

我正在运行以下 python 脚本:

I'm running the following python script:

#!/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]

但是我得到了如下错误:

However I got the errors like:

ValueError: could not convert string to float: id

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

I'm confused by this. When I try this for only one line in interactive section, instead of for loop using script:

>>> 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...]

效果很好.

谁能解释一下这个?谢谢.

Can anyone explain a little bit about this? Thank you.


解决方案

显然您的某些行没有有效的浮点数据,特别是某些行包含无法转换为的文本 id漂浮.

Obviously some of your lines don't have valid float data, specifically some line have text id which can't be converted to float.

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

When you try it in interactive prompt you are trying only first line, so best way is to print the line where you are getting this error and you will know the wrong line e.g.

#!/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]

相关文章