Autor
|
Tema: Leer archivo y separar por listas ordenadas. (Leído 3,206 veces)
|
riderz44
Desconectado
Mensajes: 4
|
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 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. archivo=open("diccionario.txt","r") lineas=archivo.readlines() archivo.close() listaPalabras=[] listaDefinicones=[] def listaPalabras(lineas): for elemento in lineas: if elemento[-1]==":": listaPalabras.append(elemento[0,-1]) else: listaPalabras.append(elemento) return listaPalabras
|
|
« Última modificación: 15 Noviembre 2016, 18:56 pm por riderz44 »
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
seguramente no entendí bien el objetivo, a lo que interprete lo haría así: archivo=open("diccionario.txt","r") lineas=archivo.readlines() archivo.close() listaPalabras=[] listaDefinicones=[] def listarPalabras(): for elemento in lineas: palabra=elemento.split(":") listaPalabras.append(palabra[0]) #ambos elementos tendrán el mismo índice listaDefinicones.append(palabra[1]) listarPalabras() print(listaPalabras[2]) #acá pruebo que tienen los índices de cada lista en este caso 2 print(listaDefinicones[2])
|
|
|
En línea
|
|
|
|
riderz44
Desconectado
Mensajes: 4
|
Si me funciono a la perfeccion, incluso aprendi sobre split, muchas gracias tincopasan.
|
|
|
En línea
|
|
|
|
riderz44
Desconectado
Mensajes: 4
|
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
|
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
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
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: #-*- coding: utf -8 -*- archivo=open("diccionario.txt","r") lineas=archivo.readlines() archivo.close() listaPalabras=[] listaDefinicones=[] def encuentra(cadena, carac): indice = 0 while indice < len(cadena): if cadena[indice] == carac: return indice indice += 1 return -1 def listarPalabras(): for elemento in lineas: divisor=encuentra(elemento,":") listaPalabras.append(elemento[:divisor]) listaDefinicones.append(elemento[divisor+1:]) listarPalabras() print(listaPalabras[1]) #acá pruebo que tienen los índices de cada lista en este caso 1 print(listaDefinicones[1])
|
|
|
En línea
|
|
|
|
riderz44
Desconectado
Mensajes: 4
|
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
|
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
|
|
|
|
|
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
|
9,814
|
24 Octubre 2006, 00:06 am
por Salco Brand
|
|
|
SEPARAR AUDIO Y VIDEO EN UN ARCHIVO MPEG
Multimedia
|
MJVF
|
3
|
1,685
|
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
|
10,730
|
22 Junio 2011, 04:34 am
por raul338
|
|
|
AYUDA Problema con dos listas ordenadas C++
Programación C/C++
|
Kougami
|
7
|
2,655
|
24 Abril 2017, 15:41 pm
por MAFUS
|
|
|
Separar listas en python
Scripting
|
Designe
|
1
|
2,050
|
28 Noviembre 2017, 22:19 pm
por tincopasan
|
|