Separar archivo en en lineas y luego dividir lineas para hacerlas listas. Python.
Publicado por Marcos (1 intervención) el 20/06/2019 00:16:30
Hola, buenas. Tengo el siguiente problema, tengo un trabajo para la universidad y la verdad que se me complicó un poco.
Tengo un archivo lleno de información, todo separado por un ; (en total 3 por linea. por ejemplo:
nombre;apellido;edad;ciudad
pedro;gonzalez;25;Lima
jorge;castellin;30;Bogotá
tengo que realizar dos funciones: con una dividir todas las lineas.
entonces tengo esta función:
Con la otra separar en listas:
lo que deseo es que la funcion leeArchivo, me lea el archivo y me entregue linea por linea. Luego que la funcion creaListas me divida los elementos en 3 listas: nombre[],apellido[],ciudad[]. la de edad no la preciso.
Espero que se entienda lo que quiero hacer y lo que hice. filtré con un contador y distinto a un ; porque es donde quiero dividir las listas, justamente sin que se agregue el ;
Quiero que me quede (con el ejemplo del principio):
nombre=[pedro,jorge]
apellido=[gonzalez,castellin]
ciudad=[Lima,Bogota]
Tengo un archivo lleno de información, todo separado por un ; (en total 3 por linea. por ejemplo:
nombre;apellido;edad;ciudad
pedro;gonzalez;25;Lima
jorge;castellin;30;Bogotá
tengo que realizar dos funciones: con una dividir todas las lineas.
entonces tengo esta función:
1
2
3
4
5
6
def leeArchivo(archivo, nombre, apellido, ciudad):
datos=len(archivo.readline())
for i in range(datos):
linea=archivo.readline(i)
creaListas(linea,nombre,apellido,ciudad)
return nombre
Con la otra separar en listas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def creaListas(linea, nombre,apellido,ciudad):
edad=[]
cont=0
for j in linea:
if j!=";" and cont==0:
nombre+=j
elif j!=";" and cont==1:
apellido+=j
elif j!=";"and cont==2:
edad+=j
elif j!=";" and cont==3:
ciudad+=j
else:
cont+=1
lo que deseo es que la funcion leeArchivo, me lea el archivo y me entregue linea por linea. Luego que la funcion creaListas me divida los elementos en 3 listas: nombre[],apellido[],ciudad[]. la de edad no la preciso.
Espero que se entienda lo que quiero hacer y lo que hice. filtré con un contador y distinto a un ; porque es donde quiero dividir las listas, justamente sin que se agregue el ;
Quiero que me quede (con el ejemplo del principio):
nombre=[pedro,jorge]
apellido=[gonzalez,castellin]
ciudad=[Lima,Bogota]
Valora esta pregunta


0