IndexError:列表索引超出范围python

时间:2014-10-15 01:25:05

标签: csv python-3.x

我确定这肯定是一个愚蠢的错误,但我尝试过并且无法自己解决。 我有一个CSV文件,格式为 id,名称,日期*时间,终端,状态。我试图创建一个词典列表( registros ),其中key:value是csv的每个字段。 我使用.split(',')执行此操作,并使用.split('*')作为日期*时间字段( fechaHora ),因为我需要使用不同的变量。一切正常,直到我尝试访问时间( fechaHora [1] ),它给了我 IndexError 。如果我打印整个列表,我可以看到.split('*')如何完美地工作,如果我打印出长度 print(len(fechaHora)) 我得到它(len = 2),所以不要&#39 ;我知道我的错误在哪里。 下面的示例代码,任何帮助表示赞赏。

"""Registros en archivo son de la forma
1,,Monday0901*085345,1,I"""
archivoOriginal = open('registros.csv', 'r')
registros = []
for linea in archivoOriginal:
    categorias = linea.split(',')
    idEmpl = categorias[0]
    nombre = categorias[1]
    fechaHora  = categorias[2].split('*')
    fecha = fechaHora[0]
    hora = fechaHora[1] #:::this line gives me the error!!
    terminal = categorias[3]
    estado  = categorias[4]
    #registros.append({"id":idEmpl, "fecha":fecha, "hora":hora, "estado":estado})
    registros.append({"id":idEmpl, "fecha":fechaHora, "estado":estado})
print (registros)
archivoOriginal.close()

以下是打印出 registros 时的一些输出,如您所见, fecha(fechaHora)是一个包含两个项目的列表

{'fecha': ['Monday0901', '132215'], 'id': '1', 'estado': '0\n'}, {'fecha': ['Monday0901', '132330'], 'id': '2', 'estado': '0\n'}, {'fecha': ['Monday0901', '135328'], 'id': '2', 'estado': '0\n'},

我正在使用python 3.4.1

1 个答案:

答案 0 :(得分:0)

替换

for linea in archivoOriginal:

for N, linea in enumerate(archivoOriginal):

使用python -i filename运行您的文件或在空闲编辑器中打开并按F5。回溯后,将出现一个交互式提示>>>。输入print(N, linea)以查看您遇到问题的号码和行。