Mostrar frases alineadas extraídas de un archivo [Python]

Iniciado por NOB2014, 27 Noviembre 2017, 16:50 PM

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

NOB2014

Hola, muy buen día.-
Los molesto por 2 cosas.
La primera es para que me digan como puedo mostrar las traducciones alineadas:

Incorrecto
CitarHome   Hogar
Almost   Casi
Also   También

CitarCorrecto
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(recién me estoy iniciando).-

Las funciones a tener en cuenta son guardar y listado

Código (python) [Seleccionar]
# -*- coding: utf-8 -*-
import os

# Traductor Inglés/Español

def menu():
borrar_pantalla()
listado()
while True:
registros=cantidad_registros()
print("\n ========== Traductor Inglés/Español ==========")
print("\n Cantidad de traducciones guardadas...:{} ".format(registros))
print("\n\n --------------- Menú principal ---------------")
print(" \n\t 1) Ingresar. \n\t 2) Consultar(visualizar/borrar)."
"\n\t 3) Finalizar.")

opcion = input("\n\t Elija opción..............: ")
if opcion < '1' or opcion > '3':
print("\n Por favor, elija una opción válida ")
input("\n Pulse [Enter] para continuar...")
borrar_pantalla()
elif len(opcion) > 1:
print("\n Por favor, elija una opción válida ")
input("\n Pulse [Enter] para continuar...")
borrar_pantalla()
else:
if opcion == '1':
ingreso()
elif  opcion == '2':
registros=cantidad_registros()
if registros > 0:
consulta()
else:
print("\n No hay traducciones guardadas para buscar")
input("\n Pulse [Enter] para continuar...")
borrar_pantalla()
if opcion == '3':
break

def listado():
print("\n ========== Listado de traducciones guardadas. ==========")
with open('traductor.txt', 'r') as tra:
for linea in tra:
print(" ", linea)

def ingreso():
borrar_pantalla()
while True:
ingles = input("\n Ingrese palabra en Inglés.......: ")
while len(ingles) == 0:
ingles = input("\n Ingrese palabra en Inglés.......: ")

espaniol = input("\n Ingrese traducción al Español...: ")
while len(espaniol) == 0:
espaniol = input("\n Ingrese traducción al Español...: ")
arch = input('\n Ingrese "Si" para guardar traducción en disco'
'\n otra para descartar.............:')
if arch == 'Si':
trad = ingles + "   " + espaniol +"\n"
guardar(trad)
else:
print("\n La traducción no fue guardada...")

seg_salir = input('\n Ingrese "Si" para otra traducción\n'
  ' Otra para ir al menú..........:')
if seg_salir == 'Si':
borrar_pantalla()
else:
menu()
break

def guardar(trad):
f=open("traductor.txt", "a")
f.write(trad)
f.close()


def consulta():
borrar_pantalla()
encontrado=""
busqueda = input("\n Ingrese consulta (en inglés o español...:) ")
with open('traductor.txt', 'r') as tra:
for linea in tra:
if busqueda in linea:
encontrado=linea

if len(encontrado) > 0:
print("\n Resultado...: {0}".format(encontrado))
print("\n ¿Desea borrar la traducción en pantalla?\n ")
opcion = input(" 'Si' para borrar / otra para descartar...: ")
if opcion == 'Si':
borrar_traduccion(encontrado)
else:
print("\n La traducción no existe...")
input("\n Pulse [Enter] para continuar...")

def cantidad_registros():
f = open("traductor.txt","r")
f.readline()
f.seek(0)
cant_registros = len(f.readlines())
f.close()

return cant_registros


def borrar_traduccion(encontrado):
f = open("traductor.txt","r")
lineas = f.readlines()
f.close()

f = open("traductor.txt","w")
for linea in lineas:
if linea!=encontrado:
f.write(linea)

f.close()



def borrar_pantalla():
if os.name == "posix":
os.system ("clear")
elif os.name == ("ce", "nt", "dos"):
os.system ("cls")

def main():
menu()

main()

   
Saludos y gracias.
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.-

tincopasan

#1
soy muy animal, pero te muestro como se puede hacer listado (de paso, nunca lo estás invocando)para que se vea más o menos como quieres, te toca modificarlo para dejarlo a tu gusto:
Código (python) [Seleccionar]


print(" Listado de traducciones guardadas. ".center(50,'='))
print(" {:^2} {:^30}  ".format('Ingles', 'Español'))
print("-"*50)
 
with open('traductor.txt', 'r') as tra:
   for linea in tra:
       partes= linea.split( )
       print(" {:20} {:20} ".format(partes[0],partes[1]))
       


En lo personal modificaría búsqueda para que sin importar si escriben con mayúsculas o minúsculas encuentren la palabra.En tu caso si no coinciden exactamente no lo hallarán, o sea si escriben home, chau no la encuentra ni a palos.
También prefiero trabajar con clases y diccionarios, pero podes tomarlo como que es subjetivo.
Sobre guardado no hay mucho para hacer, cumple su objetivo.

Código (python) [Seleccionar]

def main():
menu()

main()

no hablaré sobre todo el código, pero ésta parte me parece muy fea y redundante.
Por último, llevará un muy buen tiempo hacer todas las traducciones necesarias para que sea decente como traductor, ni hablar del tamaño  y tiempo de lectura del archivo. Existen mejores opciones como usar las bibliotecas ya hechas para tal fin.
Sin ánimo de desanimarte, o sea sigue haciendo scripts para que aprendamos.
Saludos.