【发布时间】:2014-10-15 01:25:05
【问题描述】:
我确定这一定是一个愚蠢的错误,但我尝试过但无法自己解决。
我有一个格式为 id,name,date*time,terminal,status 的 CSV 文件。我正在尝试创建一个字典列表(registros),其中 key:value 是 csv 的每个字段。
我使用.split(',') 这样做,还使用.split('*') 作为日期*时间字段(fechaHora),因为我需要它们在不同的变量中。一切正常,直到我尝试访问时间 (fechaHora[1]),它给了我 IndexError。如果我打印整个列表,我可以看到 .split('*') 如何完美工作,如果我打印出长度 print(len(fechaHora)) 我得到它(len=2),所以不知道我的错误在哪里是。
将示例代码放在下面,感谢任何帮助。
"""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
【问题讨论】:
-
您的其中一行肯定不包含第三列中的
*?如果您在循环顶部打印该行,然后为我们粘贴它在(就在之前)失败时打印的行,将会有所帮助。 -
做
try: hora = fechaHora[1]和exceptIndexError: print(fechaHora, len(fechaHora), line, sep='\n') -
正如我们在西班牙语中所说的“el que sabe, sabe”(知道的人,肯定知道)。我的 .csv 文档的第三个字段的标题没有
*,感谢@JohnZwinck 的评论!为了测试目的,我只是将标题从Fecha/Hora更改为Fecha*Hora。 PS:不知道如何将问题标记为已回答
标签: csv python-3.x