Python:对不是整数文本的字符串使用int()

Python:对不是整数文本的字符串使用int(),python,string,numpy,Python,String,Numpy,注意:我的数据使用了错误的源文件-一旦修复,我的问题就解决了。事实证明,使用int没有简单的方法。。在非整数文本的字符串上 这是《机器学习在行动》一书中的一个例子,我不太清楚到底是怎么回事。以下是一些背景: from numpy import as * def file2matrix(filename): fr = open(filename) numberOfLines = len(fr.readlines()) returnMat = zeros((numberOf

注意:我的数据使用了错误的源文件-一旦修复,我的问题就解决了。事实证明,使用int没有简单的方法。。在非整数文本的字符串上

这是《机器学习在行动》一书中的一个例子,我不太清楚到底是怎么回事。以下是一些背景:

from numpy import as *

def file2matrix(filename):
    fr = open(filename)
    numberOfLines = len(fr.readlines())
    returnMat = zeros((numberOfLines,3))
    classLabelVector = []
    fr = open(filename)
    index = 0
    for line in fr.readlines():
        line = line.strip()
        listFromLine = line.split('\t')
        returnMat[index,:] = listFromLine[0:3]
        classLabelVector.append(int(listFromLine[-1])) # Problem here.
        index += 1
    return returnMat,classLabelVector
.txt文件如下所示:

40920   8.326976    0.953952    largeDoses
14488   7.153469    1.673904    smallDoses
26052   1.441871    0.805124    didntLike
75136   13.147394   0.428964    didntLike
38344   1.669788    0.134296    didntLike
...
我在classLabelVector.appendintlistFromLine[-1]行上遇到一个错误,因为我相信是int。。正在尝试分析不是文字整数的字符串ie LargeDoges。我错过什么了吗

我在文档中查找int,但它似乎只解析数字和整数文本:

此外,本书摘录对本节进行了如下解释:

40920   8.326976    0.953952    largeDoses
14488   7.153469    1.673904    smallDoses
26052   1.441871    0.805124    didntLike
75136   13.147394   0.428964    didntLike
38344   1.669788    0.134296    didntLike
...
最后,循环文件中的所有行,并使用line.strip删除返回行字符。接下来,你把这条线分开 放入由制表符“\t”分隔的元素列表中。你拿 将前三个元素放入矩阵中的一行 您可以使用Python的负索引特性来获取最后一项 从列表中放入classLabelVector。你必须明确地 告诉解释器您想要最后一个的整数版本 项,否则它将为您提供字符串版本。通常 你必须这样做,但是NumPy会为你处理这些细节


像LargeDoges这样的字符串无法转换为整数。在的文件夹Ch02中,您有两个数据文件,请使用第二个datingTestSet2.txt,而不是加载第一个字符串,例如无法将大剂量转换为整数。在的文件夹Ch02中,有两个数据文件,使用第二个datingTestSet2.txt而不是加载第一个

您可以使用并捕获异常值错误格式错误的字符串通过int'9.4'引发异常

您可以使用并捕获异常值错误格式错误的字符串通过int'9.4'引发异常,谢谢-我没有看到其他文件。我可以结束这个问题,因为它看起来很琐碎。哇,谢谢-我没有看到其他文件。我可以结束这个问题,因为它看起来很琐碎。