如何解决ValueError:无法在python中将字符串转换为浮点

如何解决ValueError:无法在python中将字符串转换为浮点,python,python-3.x,Python,Python 3.x,我有一个像这样的数据集文本文件 2.8858451e-001 -2.0294171e-002 -1.3290514e-001 -9.9527860e-001 -9.8311061e-001 当我读了这个文件并对这个数据进行了分类时,我得到了这个错误 ValueError:无法将字符串转换为浮点:“2.3177399e-001 4.9371571e-003” 我正在使用以下代码: tra_x, tra_y, tes_x, tes_y = np.array([]), np.array([]), n

我有一个像这样的数据集文本文件

2.8858451e-001 -2.0294171e-002 -1.3290514e-001 -9.9527860e-001 -9.8311061e-001
当我读了这个文件并对这个数据进行了分类时,我得到了这个错误

ValueError:无法将字符串转换为浮点:“2.3177399e-001 4.9371571e-003”

我正在使用以下代码:

tra_x, tra_y, tes_x, tes_y = np.array([]), np.array([]), np.array([]),np.array([]) 

file = open('train\X_train.txt', encoding='utf-8') 
tra_x = file.readlines()
tra_x = [float(x).split(" ") for x in tra_x] 

file = open('train\y_train.txt', encoding='utf-8') 
tra_y = file.readlines() 

file = open('test\X_test.txt', encoding='utf-8') 
tes_x = file.readlines() 

file = open('test\y_test.txt', encoding='utf-8') 
tes_y = file.readlines() 

以下代码适用于单行:

[float(x) for x in "2.8858451e-001 -2.0294171e-002 -1.3290514e-001 -9.9527860e-001 -9.8311061e-001".split(" ")]
这些数字是长串的。您需要在空格上分隔,并将每个字符串分别转换为float

对于多行:

return_list = []
for l in tra_x:
    for entry in l.split(" "):
        return_list.append(float(entry))

如果您显示用于读取文件的代码,则会有所帮助。tra\u x、tra\u x、tes\u y=np.array([])、np.array([])、np.array([])、np.array([])file=open('train\x\u train.txt',encoding='utf-8')tra tra x=file.readlines()tra x=[float(x).split(“”)for x in tra x]file=open('train\y\u train.txt',encoding='utf-8')tra_y=file.readlines()file=open('test\X_test.txt',encoding='utf-8')tes_X=file.readlines()file=open('test\y_test.txt',encoding='utf-8')tes_y=file.readlines()我尝试过这个方法,但得到了相同的错误。tra_x=[float(x).split(“”)表示tra_x中的x]尝试tra_x=[float(x)表示tra_x中的x.split(“”)我得到这个错误AttributeError:'list'对象没有属性'split'readlines正在返回文件中的行列表。因此需要在tra_x中用另一行for i遍历每一行:train_x=[float(x)for x in i.split(“”)