Si abres el archivo y lo lees, pasandole su contenido a una variable, esa variable será de tipo string. Y los objetos string tienen una función llamada *find*
*find(s, *args)* *rfind(s, sub [,start [,end]]) -> in* Return the lowest index in s where substring sub is found, such that sub is contained within s[start,end]. Optional arguments start and end are interpreted as in slice notation. Return -1 on failure. El 8 de junio de 2014, 16:48, Chema Cortes <[email protected]> escribió: > El 8 de junio de 2014, 12:05, ruben linux <[email protected]> > escribió: > > Saludos a todos, este es mi primer correo a la lista. >> >> Estoy empezando con Python, y este me pareció un buen sitio para empezar >> y aprender. Decirnos antes de nada que este tema ya se lo busque en Google, >> y no doy con la respuesta adecuada, o la que me soluciona el problema. >> >> Como parte de mi aprendizaje, me he propuesto hacer un suripanta que >> busque palabras en un archivo, esta palabras están en otro archivo. Os dejo >> un trozo del código >> ... >> for line in file (a, 'r') >> if palabra in líne: >> print line >> >> palabra es una función que lee el archivo fuente, donde se encuentran las >> palabras que quiero buscar. Esté el el fallo que me devuelve: >> >> TypeError: 'in <string>' requires string as left operand! nota file >> > > Según este error, 'palabra' es un 'file' (fichero), no una función.pyth > > >> >> Entiendo que no le puedo pasar a if un archivo, ni una función, sólo >> palabras, y eso es lo que no se hacer. Necesito qué me guíen. >> > > A un if hay que pasarle una expresión que se evalúe a true o false. El > problema es que tienes que comparar contenidos comparables, una cadena > dentro de otra cadena, o un elemento dentro de una lista. > > >> >> Tal vez usando listas... En tal caso cual es el tamaño máximo de una >> lista???. >> > > > Puedes usar listas y su tamaño es ilimitado. Pero no te aconsejo que > intentes llenar la memoria con una lista. Para estas cosas es mejor usar > "iteradores" y sólo cargar en memoria los datos de un conjunto de datos con > los que vayas a operar. > > Por ejemplo, los objetos ficheros se definen como iteradores. Para saber > si una palabra está en un fichero: > > with open("fichero.txt") as f: > for line in f: > if palabra in line: > print "Encontrada" > > El fichero puede contener Gigas o Teras de información, pero sólo se > necesita la memoria suficiente para cargar una línea de texto. > > Con algo más de experiencia, se puede hacer cosas más sofisticadas con los > iteradores: > > def allseen(words): > state = set(words) > def _aux(lst): > state -= set(lst) > return not bool(state) # have seen all the words? > return _aux > > allfounds = allseen(words) # 'allfounds' is a function > encontrada = any( allfounds(word for word in words if word in line) for > line in open("fichero.txt")) > > La expresión es verdadera si todas las palabras de la lista "words" > existen en el fichero. > > Además, no es necesario procesar el resto del fichero si se encuentran > todas las palabras. En el momento que "allfounds" devuelve el primer true, > la función "any" retorna true y se para todo el proceso. > > > > PD: no te agobies si no entiendes nada ahora mismo. Que se pueda hacer no > quiere decir que todo el mundo lo haga así. Hazlo del modo que mejor > comprendas y pregunta lo que te surga. > > > > > >> >> Gracias a todos. >> >> _______________________________________________ >> Python-es mailing list >> [email protected] >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es > > _______________________________________________ > Python-es mailing list > [email protected] > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list [email protected] https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
