索引超出2D数组的界限?

2024-06-16 08:38:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个2D列表,我正在尝试检索一个索引指定为参数的列(类型:IntEnum)。 在尝试检索除索引0处的列以外的任何列时,我会遇到index out of bounds错误。你知道吗

枚举:

class Column(IntEnum):
    ROAD = 0
    SECTION = 1
    FROM = 2
    TO = 3
    TIMESTAMP = 4
    VFLOW=5 

class TrafficData:
    data=[[]]

以下是TrafficData的成员方法

读取文件并存储矩阵:

def __init__(self,file):
    self.data=[[word for word in line.split('\t')]for line  in file.readlines()[1:]]

检索所需列:

def getColumn(self,columnName):
    return [line[columnName] for line in self.data]

呼叫: )你知道吗

   column1 = traficdata.getColumn(columnName=Column.ROAD)
  `column2 = traficdata.getColumn(columnName=Column.FROM)`  //error
  `column3 = traficdata.getColumn(columnName=Column.TO)`   //error

我附上了一张经过__init__处理后的数据图片: enter image description here

[


Tags: toinfromselffordatalinecolumn
1条回答
网友
1楼 · 发布于 2024-06-16 08:38:09

我测试了您上面提供的代码,没有发现任何问题。这让我相信文件中的数据可能有问题。你能粘贴文件数据吗?(制表符分隔的数据)

更新- 我发现了这个问题-正如所怀疑的,这是一个数据问题(也涉及到一个小的代码更新)。进行以下更改-

1)打开文件时使用适当的编码,我使用utf-16。你知道吗

2)在共享的数据文件的末尾,它包含文本-“(72413行受影响)”以及两个新行字符。因此,您有两个选项,要么手动清理数据文件,要么更新代码以忽略“(72413行受影响)”&;“\n”字符。你知道吗

希望有帮助。你知道吗

相关问题 更多 >