Python - ValueError:float()的无效文字

时间:2015-07-16 19:42:08

标签: python csv numpy string-parsing

我有一个csv文件,我试图使用 Pylearn2 模块将其数据转换为密集设计矩阵。然而,导致错误的原因与pylearn2无关,而与我的个人实现有关。

import csv
def load_data(fileName_X, start, stop):
    with open(fileName_X, 'r') as f:
        reader_X = csv.reader(f, delimiter=';')
        X = []
        header = True
        size=0
        for row_X in reader_X:
            if header:
                header = False
                continue
            row_X = [float(elem_X) for elem_X in row_X]
            size+=1
            X.append(row_X)
        X = np.asarray(X)

if __name__ == "__main__":
    train = load_data(sys.argv[1], 0, 10)

以下是.csv文件的一些行:

-1;-0.844511;-0.339286;-1;0.0769231;-0.25;-0.929825;1;1;-0.880597;1;0;-0.92;-0.99
1;-0.796992;-0.8275;-1;0.0769231;-0.25;-0.859649;1;1;-0.671642;1;-1;-0.8;-0.94
1;-0.611429;-0.875;-1;0.0769231;-0.25;-0.929825;1;1;-0.850746;1;-1;-0.84;-0.88446
-1;-0.661654;-0.119286;-1;0.846154;0.75;-0.754386;1;1;-0.820896;-1;-1;-0.6;-0.99084

通常我期望的是在;中将每行的所有值分隔为row_X。但是当我运行程序时,我收到了这个错误:

Traceback (most recent call last):
  File "make_dataset.py", line 68, in <module>
    train = load_data(sys.argv[1], 0, 10)
  File "make_dataset.py", line 53, in load_data
    row_X = [float(elem_X) for elem_X in row_X]
ValueError: invalid literal for float(): 1;-0.796992;-0.8275;-1;0.0769231;-0.25;-0.859649;1;1;-0.671642;1;-1;-0.8;-0.94

我无法找到原因是该程序与另一个包含这些行的csv文件正常工作(只是为了比较它可能的不同形式与第一行):

7.4;0.7;0;1.9;0.076;11;34;0.9978;3.51;0.56;9.4;5
7.8;0.88;0;2.6;0.098;25;67;0.9968;3.2;0.68;9.8;5
7.8;0.76;0.04;2.3;0.092;15;54;0.997;3.26;0.65;9.8;5
11.2;0.28;0.56;1.9;0.075;17;60;0.998;3.16;0.58;9.8;6

0 个答案:

没有答案