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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Leer archivo y separar por listas ordenadas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer archivo y separar por listas ordenadas.  (Leído 2,536 veces)
riderz44

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Leer archivo y separar por listas ordenadas.
« en: 9 Noviembre 2016, 09:34 am »

Hola soy nuevo en esto de python y me encontre con un ejercicio que intento resolver pero siempre me quedo cerca. Y debe ser de lo mas facil, si me ayudan puede que mi cabeza no explote  ;D

Consta en:
Leer un archivo txt que contiene palabras y sus significados, ejemplo:

basurita: Partícula de suciedad, especialmente la que se introduce en el ojo.
hacker: pirata informático.
perla: Frase llamativa por desafortunada.
etc

Luego agregar las palabras en una lista, y las definiciones en otra, pero ambas tienen que tener el mismo indice de orden, si listaPalabras[0] entonces listaDefiniciones[0].

Esto es hasta donde llego, trate de varias formas.


Código
  1. archivo=open("diccionario.txt","r")
  2. lineas=archivo.readlines()
  3. archivo.close()
  4. listaPalabras=[]
  5. listaDefinicones=[]
  6.  
  7. def listaPalabras(lineas):
  8.        for elemento in lineas:
  9.              if elemento[-1]==":":
  10.                    listaPalabras.append(elemento[0,-1])
  11.              else:
  12.                    listaPalabras.append(elemento)
  13.         return listaPalabras
  14.  





« Última modificación: 15 Noviembre 2016, 18:56 pm por riderz44 » En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Leer archivo y separar por listas ordenadas.
« Respuesta #1 en: 9 Noviembre 2016, 12:10 pm »

seguramente no entendí bien el objetivo, a lo que interprete lo haría así:
Código
  1. archivo=open("diccionario.txt","r")
  2. lineas=archivo.readlines()
  3. archivo.close()
  4. listaPalabras=[]
  5. listaDefinicones=[]
  6.  
  7. def listarPalabras():
  8.    for elemento in lineas:
  9.        palabra=elemento.split(":")
  10.        listaPalabras.append(palabra[0])         #ambos elementos tendrán el mismo índice
  11.        listaDefinicones.append(palabra[1])
  12.  
  13.  
  14. listarPalabras()        
  15. print(listaPalabras[2])            #acá pruebo que tienen los índices de cada lista en este caso 2
  16. print(listaDefinicones[2])
  17.  
  18.  


En línea

riderz44

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Leer archivo y separar por listas ordenadas.
« Respuesta #2 en: 10 Noviembre 2016, 02:57 am »

Si me funciono a la perfeccion, incluso aprendi sobre split, muchas gracias tincopasan. ;D
En línea

riderz44

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Leer archivo y separar por listas ordenadas.
« Respuesta #3 en: 15 Noviembre 2016, 19:01 pm »

Perdon que vuelva a colocar el tema en cuestion, pero me han dicho que no puedo usar split en el problema, que tengo que reemplazarlo con while, a lo que viene mi pregunta, de que manera puedo hacerlo? intente de varias formas pero no me sale, se que la condicion es que cuando aparezca ":" agrege en una lista lo que viene antes de ":", y que en la otra lista lo que viene luego, pero no puedo hacer que funcione, help :'(
En línea

Once

Desconectado Desconectado

Mensajes: 120


Ver Perfil WWW
Re: Leer archivo y separar por listas ordenadas.
« Respuesta #4 en: 15 Noviembre 2016, 20:56 pm »

Perdon que vuelva a colocar el tema en cuestion, pero me han dicho que no puedo usar split en el problema, que tengo que reemplazarlo con while, a lo que viene mi pregunta, de que manera puedo hacerlo? intente de varias formas pero no me sale, se que la condicion es que cuando aparezca ":" agrege en una lista lo que viene antes de ":", y que en la otra lista lo que viene luego, pero no puedo hacer que funcione, help :'(

Tienes varias formas:

1) Usar un buffer que guarde los caracteres hasta que llegues a un ":" o un salto de linea, y cuando llegues al ":" o el salto de línea  agregas el buffer a la lista y lo limpias
2) Usar slicing: buscas la posición en la cade donde esta el ":" (digamos n)y haces un slicing: cadena[:n] y cadena[n+1:]

PD: Si colocas el código que tienes, sería un poco más fácil orientarse según la idea que tengas

Saludos!
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Leer archivo y separar por listas ordenadas.
« Respuesta #5 en: 16 Noviembre 2016, 04:04 am »

me parece rídiculo lo que te piden, ya que el objetivo de python es simplificar no de complicar, pero bueno hay cada uno...
hice unas modificaciones al código anterior, solo agregue la función len() que supongo la podés usar! sino hay que seguir hueveando y agregando código. Usé while porque lo pediste sino tampoco es necesario!
espero sea más o menos lo que buscas:
Código
  1. #-*- coding: utf -8 -*-
  2. archivo=open("diccionario.txt","r")
  3. lineas=archivo.readlines()
  4. archivo.close()
  5. listaPalabras=[]
  6. listaDefinicones=[]
  7.  
  8. def encuentra(cadena, carac):
  9.    indice = 0
  10.    while indice < len(cadena):
  11.        if cadena[indice] == carac:
  12.            return indice
  13.        indice += 1
  14.    return -1
  15.  
  16. def listarPalabras():
  17.    for elemento in lineas:
  18.        divisor=encuentra(elemento,":")
  19.        listaPalabras.append(elemento[:divisor])        
  20.        listaDefinicones.append(elemento[divisor+1:])
  21.  
  22.  
  23. listarPalabras()        
  24. print(listaPalabras[1])            #acá pruebo que tienen los índices de cada lista en este caso 1
  25. print(listaDefinicones[1])
  26.  
En línea

riderz44

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Leer archivo y separar por listas ordenadas.
« Respuesta #6 en: 16 Noviembre 2016, 17:45 pm »

Y la verdad que si, ya me habia puesto a estudiar split para poder presentar el porque esta en el codigo y como funciona, pero que me digan que vuelva con while me molesto, el codigo funciona genial gracias de nuevo tincopasan, lo habia hecho parecido pero tenia lineas de más que no servian, el tuyo es mas optimo.
En línea

Once

Desconectado Desconectado

Mensajes: 120


Ver Perfil WWW
Re: Leer archivo y separar por listas ordenadas.
« Respuesta #7 en: 16 Noviembre 2016, 17:48 pm »

me parece rídiculo lo que te piden, ya que el objetivo de python es simplificar no de complicar, pero bueno hay cada uno...

No es ridículo, es una muy buena práctica para adquirir un poco de lógica a la hora de programar, por eso en estos casos es mejor no dar los códigos hechos, sino guiar al usuario para que llegue a la solución por su propia cuenta.

Obviamente, luego de la etapa de aprendizaje, no es muy práctico (y a veces tampoco más eficiente) reinventar la rueda.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Separar la ruta de un archivo de este. « 1 2 »
.NET (C#, VB.NET, ASP)
SeniorX 10 8,154 Último mensaje 24 Octubre 2006, 00:06 am
por Salco Brand
SEPARAR AUDIO Y VIDEO EN UN ARCHIVO MPEG
Multimedia
MJVF 3 1,194 Último mensaje 3 Julio 2006, 22:43 pm
por Sourraund
Leer un archivo .txt y separar las primeras 3 lineas en 3 variables distintas « 1 2 »
Programación Visual Basic
extreme69 10 9,588 Último mensaje 22 Junio 2011, 04:34 am
por raul338
AYUDA Problema con dos listas ordenadas C++
Programación C/C++
Kougami 7 1,956 Último mensaje 24 Abril 2017, 15:41 pm
por MAFUS
Separar listas en python
Scripting
Designe 1 1,493 Último mensaje 28 Noviembre 2017, 22:19 pm
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines