Diccli…

… o cómo hacer un diccionario en python en menos de 50 lineas

Como sabrán (?) estoy haciendo un curso de Italiano per piacere y porque estaba completamente desocupado mas que nada… resulta que buscando y buscando no hay muchos traductores on-line de Italiano a Español (y viceversa) vaya uno a saber a que se debe; lo que si encontré en “All free dictionaries project” http://www.dicts.info/. De su página se pueden bajar unos archivos “.txt” para varios idiomas, entre los cuales encontré uno con traducciones de Italiano al Español :D.

El archivo está organizado más o menos así:

[espacio]palabra[espacio][tab][espacio]traduccion[espacio][tab][espacio]tipo de palabra (adjetivo, verbo, etc.)[espacio]

Como verán, no es muy díficil hacer un programita que permita separar todo eso.. con la ayuda de split y slices sale con fritas! 😀

Les dejo el código a continuación para que lo miren, copien, tuneen, escupan e insulten.. debería correr en Linux, Windows, MacOS y en tu tostadora si soporta python.

#!/usr/bin/env python
#-*- encoding: utf-8 -*-

# This is FREE SOFTWARE: GNU GPLv3
# copyright (C) 2011 Ramiro Algozino <algozino@gmail.com>

import sys
import readline

if len(sys.argv) > 1:
    dicname = sys.argv[1]
else:
    dicname = u'ita-spa.txt'

dic = open(dicname)
words = {}

print
print u'Cargando palabras desde el archivo de diccionario "%s"... ' % dicname,

for line in dic.readlines():
    if not line.startswith("#"):
        definition = line.decode(u'utf-8').split(u'\t')
        words[definition[0].strip()] = definition[1:]
dic.close()

print u"Listo."

print
word = raw_input('Ingrese palabra a buscar (Q para salir): ')
word = word.decode('utf-8')
while word != 'Q':
    try:
        print
        print word + u':'
        print u'\t' + words[word][0].strip()
        print u'\t(%s)' % words[word][1].strip()
        print
    except KeyError:
        print u"\tNo se encontró la palabra.\n"
        if raw_input("¿Desea agregarla al diccionario? (y/n):") == u'y':
            tr = raw_input('Ingrese traducción: ')
            tipo = raw_input('Ingrese tipo de palabra: ')
            with open(dicname,'a+') as f:
                words[word] = [tr, tipo]
                f.write(word + u'\t' + tr + u'\t' + tipo)
            print u'Agregada "%s" al diccionario' % word
        print
    word = raw_input('Ingrese palabra a buscar: ')
    word = word.decode('utf-8')

Y una screenshot del programa funcionando:

Captura de Pantalla de DicCli: un diccionario en Python para consola.
Captura de Pantalla de DicCli

TO-DO: que baje automáticamente el archivo diccionario de la web.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s