<div dir="ltr">Si abres el archivo y lo lees, pasandole su contenido a una variable, esa variable será de tipo string.<div>Y los objetos string tienen una función llamada <b>find</b></div><div><br></div><font color="#990000"><b>find(s, *args)</b></font><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div><font color="#990000"><b>rfind(s, sub [,start [,end]]) -> in</b></font></div></blockquote><div><font color="#990000"> </font><font color="#990000"><br></font><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<font color="#990000">Return the lowest index in s where substring sub is found,<br>such that sub is contained within s[start,end].  Optional<br>arguments start and end are interpreted as in slice notation.<br> <br>Return -1 on failure.<br>
</font></blockquote></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">El 8 de junio de 2014, 16:48, Chema Cortes <span dir="ltr"><<a href="mailto:pych3m4@gmail.com" target="_blank">pych3m4@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">El 8 de junio de 2014, 12:05, ruben linux <span dir="ltr"><<a href="mailto:rubia.linux@gmail.com" target="_blank">rubia.linux@gmail.com</a>></span> escribió:<div class="">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Saludos a todos, este es mi primer correo a la lista.</div><div><br></div><div>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. </div>


<div><br></div><div>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</div><div>...</div><div>for line in file (a, 'r')</div>


<div>      if palabra in líne:</div><div>             print line</div><div><br></div><div>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:</div>


<div><br></div><div>   TypeError: 'in <string>' requires string as left operand! nota file</div></blockquote><div><br></div></div><div>Según este error, 'palabra' es un 'file' (fichero), no una función.pyth<br>

</div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div><div>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.</div>

</blockquote><div><br></div></div><div>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. <br>

</div><div class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br></div><div>Tal vez usando listas... En tal caso cual es el tamaño máximo de una lista???.</div></blockquote><div><br><br></div></div><div>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.<br>

<br></div><div>Por ejemplo, los objetos ficheros se definen como iteradores. Para saber si una palabra está en un fichero:<br><br></div><div>with open("fichero.txt") as f:<br></div><div>   for line in f:<br></div>

<div>      if palabra in line:<br></div><div>          print "Encontrada"<br><br></div><div>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.<br>

<br></div><div>Con algo más de experiencia, se puede hacer cosas más sofisticadas con los iteradores:<br><br></div><div>def allseen(words):<br></div><div>   state = set(words)<br></div><div>   def _aux(lst):<br></div><div>

       state -= set(lst)<br></div><div>       return not bool(state)    # have seen all the words?<br></div><div>   return _aux<br></div><div><br></div><div>allfounds = allseen(words)  # 'allfounds' is a function<br>

</div><div>encontrada = any( allfounds(word for word in words if word in line) for line in open("fichero.txt"))  <br></div><div><br></div><div>La expresión es verdadera si todas las palabras de la lista "words" existen en el fichero.<br>

<br></div><div>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.<br>

<br><br><br></div><div>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.<br></div><div class="">
<div><br>
<br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div><div>Gracias a todos.</div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br>Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": <a href="http://ch3m4.org/blog" target="_blank">http://ch3m4.org/blog</a><br>
Buscador Python Hispano: <a href="http://ch3m4.org/python-es" target="_blank">http://ch3m4.org/python-es</a>
</font></span></div></div>
<br>_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>
<br></blockquote></div><br></div>