+ 1

I do not understand why I fail

p=1 while p<var: fieldnames[p]=input('Escribe el valor de la columna ' + str(p) + ': ') p+=1 #ERROR: IndexError: list assignment index out of range

23rd Apr 2018, 12:46 PM
Prophet
3 odpowiedzi
+ 4
Can you provide full code??
23rd Apr 2018, 1:02 PM
Muhd Khairul Amirin
Muhd Khairul Amirin - avatar
+ 1
import csv import json from sys import stdout #Fichero csv a convertir origen=input('Inserta el nombre del fichero origen: ') #Fichero json de destino destino=input('Da un nombre para el fichero a generar: ') #Índice que utilizaremos en kibana indice=input('Inserta nombre del indice: ') #Abrimos el fichero de destino jsonfile = open(destino, 'w') #Guardamos en cada elemento del array "lineas" cada línea del fichero de origen with open(origen,'r') as infile: lineas = infile.readlines() fieldnames=[] #Pregunta al usuario si nuestro csv tiene cabecera tienecab=input('Tiene cabecera? s/n: ') k=0 #Si tiene cabecera, coge el primer elemento del array "lineas" y lo guarda en if(tienecab == 's'): for linea in lineas: for i in linea: if (k==0): fieldnames=lineas k=1 #Si no tiene cabecera, le pregunta al usuario cuantos campos tiene la cabecera y le pregunta 1 a 1 else: numcab=input('Cuantas columnas tiene la cabecera: ') var=int(numcab) p=1 while p<var: fieldnames[p]=input('Escribe el valor de la columna ' + str(p) + ': ') p+=1 reader = csv.DictReader(fieldnames) rowid = 0 #Va copiando línea a línea, con el formato de cabeceras, los datos de json, separados por una línea de index for row in reader: jsonfile.write('{"index":{"_index":"' + indice + '","_id":' + str(rowid) + '}}\n') json.dump(row, jsonfile) jsonfile.write('\n') rowid += 1 #Cierra el fichero json jsonfile.close()
23rd Apr 2018, 1:02 PM
Prophet
0
I think that your "fieldnames" array is filled in wrong way (or not filled).... I have doed fast read to your code but i think that this line fieldnames=lineas dont do whta your think
23rd Apr 2018, 2:32 PM
KrOW
KrOW - avatar