Autor Tema: [Python] Mostrar frases alineadas extraídas de un archivo.  (Leído 68 veces)

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

Desconectado Daniel1952

  • PIC10
  • *
  • Mensajes: 45
[Python] Mostrar frases alineadas extraídas de un archivo.
« en: 27 de Noviembre de 2017, 17:30:52 »
Hola, muy buen día.-
Los molesto por 2 cosas.
La primera es para que me digan como puedo mostrar las traducciones alineadas:

Incorrecto:
Citar
Home   Hogar
Almost   Casi
Also   También

Correcto:
Citar
Home       Hogar
Almost     Casi
Also         También

Y la segunda para que alguien con mucho pero mucho tiempo me de algún consejo para mejorar el código.-
Las funciones a tener en cuenta son guardar y listado

Código: Python
  1. # -*- coding: utf-8 -*-
  2. import os
  3.  
  4. # Traductor Inglés/Español
  5.  
  6. def menu():
  7.         borrar_pantalla()
  8.         listado()
  9.         while True:
  10.                 registros=cantidad_registros()
  11.                 print("\n ========== Traductor Inglés/Español ==========")
  12.                 print("\n Cantidad de traducciones guardadas...:{} ".format(registros))
  13.                 print("\n\n --------------- Menú principal ---------------")
  14.                 print(" \n\t 1) Ingresar. \n\t 2) Consultar(visualizar/borrar)."
  15.                         "\n\t 3) Finalizar.")
  16.                
  17.                 opcion = input("\n\t Elija opción..............: ")
  18.                 if opcion < '1' or opcion > '3':
  19.                         print("\n Por favor, elija una opción válida ")
  20.                         input("\n Pulse [Enter] para continuar...")
  21.                         borrar_pantalla()
  22.                 elif len(opcion) > 1:
  23.                         print("\n Por favor, elija una opción válida ")
  24.                         input("\n Pulse [Enter] para continuar...")
  25.                         borrar_pantalla()
  26.                 else:          
  27.                         if opcion == '1':
  28.                                 ingreso()
  29.                         elif  opcion == '2':
  30.                                 registros=cantidad_registros()
  31.                                 if registros > 0:
  32.                                         consulta()
  33.                                 else:
  34.                                         print("\n No hay traducciones guardadas para buscar")
  35.                                         input("\n Pulse [Enter] para continuar...")
  36.                                         borrar_pantalla()
  37.                 if opcion == '3':
  38.                         break
  39.  
  40. def listado():
  41.         print("\n ========== Listado de traducciones guardadas. ==========")
  42.         with open('traductor.txt', 'r') as tra:
  43.                 for linea in tra:
  44.                         print(" ", linea)
  45.        
  46. def ingreso():
  47.         borrar_pantalla()
  48.         while True:
  49.                 ingles = input("\n Ingrese palabra en Inglés.......: ")
  50.                 while len(ingles) == 0:
  51.                         ingles = input("\n Ingrese palabra en Inglés.......: ")
  52.  
  53.                 espaniol = input("\n Ingrese traducción al Español...: ")
  54.                 while len(espaniol) == 0:
  55.                         espaniol = input("\n Ingrese traducción al Español...: ")
  56.                 arch = input('\n Ingrese "Si" para guardar traducción en disco'
  57.                                          '\n otra para descartar.............:')
  58.                 if arch == 'Si':
  59.                         trad = ingles + "   " + espaniol +"\n"
  60.                         guardar(trad)
  61.                 else:
  62.                         print("\n La traducción no fue guardada...")
  63.  
  64.                 seg_salir = input('\n Ingrese "Si" para otra traducción\n'
  65.                                                   ' Otra para ir al menú..........:')
  66.                 if seg_salir == 'Si':
  67.                         borrar_pantalla()      
  68.                 else:
  69.                         menu()
  70.                         break
  71.  
  72. def guardar(trad):
  73.         f=open("traductor.txt", "a")
  74.         f.write(trad)
  75.         f.close()
  76.  
  77.  
  78. def consulta():
  79.         borrar_pantalla()
  80.         encontrado=""
  81.         busqueda = input("\n Ingrese consulta (en inglés o español...:) ")
  82.         with open('traductor.txt', 'r') as tra:
  83.                 for linea in tra:
  84.                         if busqueda in linea:
  85.                                 encontrado=linea
  86.  
  87.         if len(encontrado) > 0:
  88.                 print("\n Resultado...: {0}".format(encontrado))
  89.                 print("\n ¿Desea borrar la traducción en pantalla?\n ")
  90.                 opcion = input(" 'Si' para borrar / otra para descartar...: ")
  91.                 if opcion == 'Si':
  92.                         borrar_traduccion(encontrado)
  93.         else:  
  94.                 print("\n La traducción no existe...")
  95.                 input("\n Pulse [Enter] para continuar...")
  96.  
  97. def cantidad_registros():
  98.         f = open("traductor.txt","r")
  99.         f.readline()
  100.         f.seek(0)
  101.         cant_registros = len(f.readlines())
  102.         f.close()
  103.        
  104.         return cant_registros
  105.  
  106.  
  107. def borrar_traduccion(encontrado):
  108.         f = open("traductor.txt","r")
  109.         lineas = f.readlines()
  110.         f.close()
  111.  
  112.         f = open("traductor.txt","w")
  113.         for linea in lineas:
  114.                 if linea!=encontrado:
  115.                         f.write(linea)
  116.  
  117.         f.close()
  118.  
  119.  
  120.  
  121. def borrar_pantalla():
  122.         if os.name == "posix":
  123.                 os.system ("clear")
  124.         elif os.name == ("ce", "nt", "dos"):
  125.                 os.system ("cls")
  126.  
  127. def main():
  128.         menu()
  129.        
  130. main()

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4354
    • Picuino
Re: [Python] Mostrar frases alineadas extraídas de un archivo.
« Respuesta #1 en: 27 de Noviembre de 2017, 21:09:01 »
Aquí hay mucho que aprender.


1º Lo mejor es guardar datos en un diccionario de Python. Busca en la documentación.
   traduc['red'] = 'rojo'
https://docs.python.org/3/tutorial/datastructures.html#dictionaries

2º Print alineado:
https://docs.python.org/3/tutorial/inputoutput.html

3º Para guardar datos, te aconsejo el módulo pyYaml
http://pyyaml.org/wiki/PyYAML

4º Para poder guardar texto en español (acentos y demás en formato UTF8) utiliza la librería codecs:
https://docs.python.org/3/library/codecs.html?highlight=codecs#module-codecs

Por ahora no tengo tiempo de explicar más. Lo mejor es que experimentes cada uno por separado y al final lo juntes todo.

Un saludo