我确定这肯定是一个愚蠢的错误,但我尝试过并且无法自己解决。
我有一个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
答案 0 :(得分:0)
替换
for linea in archivoOriginal:
与
for N, linea in enumerate(archivoOriginal):
使用python -i filename
运行您的文件或在空闲编辑器中打开并按F5。回溯后,将出现一个交互式提示>>>
。输入print(N, linea)
以查看您遇到问题的号码和行。