elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Doble factor de autenticación o verificación en dos pasos


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderador: Eleкtro)
| | |-+  extaer datos en columnas ordenadas para bucle Python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: extaer datos en columnas ordenadas para bucle Python  (Leído 469 veces)
fesacu

Desconectado Desconectado

Mensajes: 1


Ver Perfil
extaer datos en columnas ordenadas para bucle Python
« en: 13 Abril 2018, 18:05 »

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.


En línea

srWhiteSkull

Desconectado Desconectado

Mensajes: 169



Ver Perfil WWW
Re: extaer datos en columnas ordenadas para bucle Python
« Respuesta #1 en: 13 Abril 2018, 18:23 »

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.


En línea

Sentex

Desconectado Desconectado

Mensajes: 80


Programador


Ver Perfil WWW
Re: extaer datos en columnas ordenadas para bucle Python
« Respuesta #2 en: 15 Abril 2018, 23:53 »

Aquí tiene un script para hacerte el trabajo ;)

Código
  1. #Leer columnas de un archivo By Sentex
  2.  
  3. import sys
  4.  
  5. COLUMNA1 = [] #Se declaran las columnas
  6. COLUMNA2 = []
  7. COLUMNA3 = []
  8.  
  9. NUMERO_LINEAS = 0
  10.  
  11. print("[#] Leyendo el archivo...")
  12. with open("fichero.txt", "r") as f: #Se lee el archivo por lineas y se almacenan como list
  13.    data = f.readlines()
  14.    f.close()
  15. print("[*] Archivo leido")
  16. print("[#] Creando columnas...")
  17. print("")
  18. for line in data: #Se coje de una en una las lineas que tenia el archivo
  19.    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"]
  20.    COLUMNA1.append(line[0]) #Se introducen valores en las columnas
  21.    COLUMNA2.append(line[1])
  22.    COLUMNA3.append(line[2])
  23.    NUMERO_LINEAS += 1 #Se cuentan las lineas
  24. print("[*] Columnas creadas")
  25. print("[#] Mostrando datos...")
  26.  
  27. n = 0
  28.  
  29. 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
  30.    print("la persona {} tiene un coche {} y un coche {}".format(COLUMNA1[n], COLUMNA2[n], COLUMNA3[n]))
  31.    n += 1
  32.    if n == NUMERO_LINEAS:
  33.        break
  34. print("")
  35. print("[*] Datos mostrados!") #Fin del programa
  36. sys.exit()
  37.  

Fichero.txt
Código:
jose mercedes bmw
luis mercedes peugeot
antonio mercedes fiat

Output
Código:
[#] 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!.
En línea

Preguntas o peticiones en twitter o discord:

Discord: MrSentex#1227
Twitter: @fbi_sentex
Avispon99

Desconectado Desconectado

Mensajes: 50



Ver Perfil WWW
Re: extaer datos en columnas ordenadas para bucle Python
« Respuesta #3 en: 16 Abril 2018, 04:35 »

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..
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como hacer referencia cruzada para acomodar datos en columnas asp.net c#
.NET
Guillito 0 461 Último mensaje 4 Noviembre 2016, 15:47
por Guillito
(Python 3.5) Bucle for
Scripting
BigKaz 1 337 Último mensaje 10 Diciembre 2016, 19:31
por engel lex
(PYTHON 3.6) Listas y bucle FOR
Scripting
BigKaz 5 1,069 Último mensaje 13 Enero 2017, 05:13
por engel lex
(Python 3.6) Bucle for y while mezclados
Scripting
BigKaz 1 567 Último mensaje 27 Enero 2017, 02:09
por engel lex
Ejercicio Bucle While en Python
Ejercicios
mgkelly 2 1,167 Último mensaje 24 Mayo 2017, 06:30
por engel lex
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines