extaer datos en columnas ordenadas para bucle Python

Iniciado por fesacu, 13 Abril 2018, 18:05 PM

0 Miembros y 1 Visitante están viendo este tema.

fesacu

buenas tardes,
soy menos que novato en esto de la programacion y despues de leer tutoriales , videos, foros etc.., no consigo hacer lo siguiente, no se si podrian ayudar, o darme alguna idea..
gracias por adelantado.

tengo el siguiente txt :

nombre palabra palabra2 palabra4 jose
una linea cualquiera
otra linea cualquiera
otra linea cualquiera
coche palabra6 palabra7 palabra1 mercedes
coche bmw
nombre palabra6 palabra7 palabra1 palabra6 palabra7luis
una linea cualquiera
otra linea cualquiera
coche mercedes
coche palabra1 palabra2 palabra3 peugeot
nombre antonio
una linea cualquiera
otra linea cualquiera
otra linea
coche mercedes
coche fiat
coche seat

quiero de alguna forma tener en una tabla csv de tre columnas. ( x, y , z):

jose mercedes bmw
luis mercedes peugeot
antonio mercedes fiat


luego, una vez que tenga las tres columnas, por medio de un bucle for or while leerias esas columnas (listas).
quedaria algo así:


import csv
archivo=open("fichero.csv")
lector=csv.reader(archivo, delimiter=";")
for linea in lector:

x=lista[0]
y=lista[1]
z=lista[2]


print("la persona "+x "tiene un coche "+y " y un coche " z)

la persona jose tiene un coche mercedes un coche bmw
la persona luis tiene un coche mercedes y un coche peugeot
la persona antonio tiene un coche mercedes y un coche fiat

Hasta ahora lo unico que se hacer es sacar cada lista por separado usando las palabras clave:

nombre y coche respectivamente; pero no se como obtener el csv con las columnas ordenadas para luego poder pasar el bucle.

Gracias de nuevo.

srWhiteSkull

Usa el método sort() en el array pero para no perder el índice ya que lo asocias al resto de arrays concatena a cada elemento un espacio y el índice antes de la ordenación, luego lee cada elemento ordenado y toma el índice que estará al final de cada cadena para relacionar los demás datos. Esa sería una forma pero habrá más. En la programación no todo es encontrar una función o librería que te lo haga, también puedes improvisar métodos artesanales en base a los conocimientos fundamentales de la programación y del lenguaje de turno.

Sentex

Aquí tiene un script para hacerte el trabajo ;)

Código (python) [Seleccionar]

#Leer columnas de un archivo By Sentex

import sys

COLUMNA1 = [] #Se declaran las columnas
COLUMNA2 = []
COLUMNA3 = []

NUMERO_LINEAS = 0

print("[#] Leyendo el archivo...")
with open("fichero.txt", "r") as f: #Se lee el archivo por lineas y se almacenan como list
    data = f.readlines()
    f.close()
print("[*] Archivo leido")
print("[#] Creando columnas...")
print("")
for line in data: #Se coje de una en una las lineas que tenia el archivo
    line = line.replace("\n", "").split(' ') #Se separa la linea en espacios Ejemplo: a = "pepe jesus pablo".split(' '). a seria un valor list y seria traducido asi a = ["pepe", "jesus", "pablo"]
    COLUMNA1.append(line[0]) #Se introducen valores en las columnas
    COLUMNA2.append(line[1])
    COLUMNA3.append(line[2])
    NUMERO_LINEAS += 1 #Se cuentan las lineas
print("[*] Columnas creadas")
print("[#] Mostrando datos...")

n = 0

while True: #Se crea un bucle para mostrar los datos que solo acabara cuando se hayan mostrado todas las lineas del archivo por eso se contaron antes
    print("la persona {} tiene un coche {} y un coche {}".format(COLUMNA1[n], COLUMNA2[n], COLUMNA3[n]))
    n += 1
    if n == NUMERO_LINEAS:
        break
print("")
print("[*] Datos mostrados!") #Fin del programa
sys.exit()


Fichero.txt

jose mercedes bmw
luis mercedes peugeot
antonio mercedes fiat


Output

[#] Leyendo el archivo...
[*] Archivo leido
[#] Creando columnas...

[*] Columnas creadas
[#] Mostrando datos...
la persona jose tiene un coche mercedes y un coche bmw
la persona luis tiene un coche mercedes y un coche peugeot
la persona antonio tiene un coche mercedes y un coche fiat

[*] Datos mostrados!



Espero haber sido de ayuda. Un saludo!.
Preguntas o peticiones en twitter o discord:

Discord: MrSentex#1227
Twitter: @fbi_sentex

Avispon99

El  " archivo=open("fichero.csv") " que estas usando no tiene un formato de apertura definido, se coloca un "r" para lectura o un "w" para escritura.. dependiendo..