Presentación y cargando un archivo en un diccionario.

Marcos Sánchez Provencio rapto en arrakis.es
Mar Jun 1 13:45:06 CEST 2004


Si hay una palabra por línea y el fichero no es enorme, puedes hacer esto:

def cargaStopWords(stopwordsFile):
    """ Carga el archivo de stopwords en un diccionario. """
    return dict.fromkeys(file(stopwordsFile).read().split())

file abre el fichero (por omisión, en sólo lectura)
read lo lee entero (si son megas, no irá muy allá)
split lo divide en palabras
dict.fromkeys te genera un diccionario a partir de las claves dadas

Lo de los errores no lo entiendo, pero de Perl estoy totalmente pez.



Víctor Peinado wrote:

>¡Hola a todos!
>
>Me llamo Víctor y soy novatillo en Python. Llevo leyendo tutoriales una semana 
>y apuntado a la lista tres o cuatro días, pero tengo un par de preguntas (de 
>manual, seguro) porque me temo que sigo pensando en términos de Perl para 
>hacer algunas cosas más o menos triviales. Os cuento:
>
>Necesito leer un archivo que contiene palabras (una por línea) y me gustaría 
>cargarlas en un diccionario. Para ello, he hecho la siguiente función, 
>calcada de las que suelo usar en Perl, no sé si es la manera más 
>sencilla/habitual de hacerla en Python:
>
>def cargaStopWords(stopwordsFile):
>    """ Carga el archivo de stopwords en un diccionario. """
>    stopwords = {}
>    f = open(stopwordsFile, "r")
>    if f: # compruebo si se ha cargado correctamente el archivo
>        for linea in f:
>            linea = linea[:-1] # elimino el retorno de carro
>            stopwords[linea] = 1
>    else:
>        sys.stderr.write("Error al leer el fichero de stopwords %.\n" % 
>stopwordsFile)
>        sys.exit()
>
>    f.close()
>    return stopwords
>
>
>- ¿Es necesario comprobar que se ha cargado correctamente el archivo? O 
>preguntando de otro modo, ¿cómo se traduce el siguiente idiom de Perl?
>
>   open FILEHANDLE, $file or die "$!"
>
>- ¿Es necesario cerrar el archivo por defecto se cierra cuando abra otro o 
>cuando termine el script? 
>- ¿Existe alguna variable interna de Python que guarde los errores, como hace 
>$! en Perl?
>- ¿La forma más sencilla de recorre un fichero de texto línea a línea es 
>usando el módulo fileinput y haciendo?
>
>for linea in fileinput.input():
>    print linea
>
>- ¿Dónde puedo leer algo acerca de interpolación de variables en cadenas y 
>demás? 
>
>Siento preguntar cosas tan obvias, pero es que todavía ando torpe con la 
>documentación :-( Gracias de antemano y saludos.
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>  
>




Más información sobre la lista de distribución Python-es