<div dir="auto">gracias!!</div><div class="gmail_extra"><br><div class="gmail_quote">El 27 feb. 2017 20:23, "Chema Cortes" <<a href="mailto:pych3m4@gmail.com">pych3m4@gmail.com</a>> escribió:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">El vie., 24 feb. 2017 a las 16:26, Gonzalo V (<<a href="mailto:gvm2121@gmail.com" target="_blank">gvm2121@gmail.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_-5029850901860412058gmail_msg"><div class="m_-5029850901860412058gmail_msg">Amigos, una consulta cortita</div><div class="m_-5029850901860412058gmail_msg"><br class="m_-5029850901860412058gmail_msg"></div><blockquote class="gmail_quote m_-5029850901860412058gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">tengo un error que es así:<br class="m_-5029850901860412058gmail_msg">Traceback (most recent call last):<br class="m_-5029850901860412058gmail_msg">  File "C:\Users\note\AppData\Local\<wbr>Programs\Python\Python35-32\<wbr>alumnos.py", line 16, in <module><br class="m_-5029850901860412058gmail_msg">    vot=par.find_next().get_text()<br class="m_-5029850901860412058gmail_msg">AttributeError: 'NoneType' object has no attribute 'find_next'</blockquote><div class="m_-5029850901860412058gmail_msg"><br class="m_-5029850901860412058gmail_msg"></div><div class="m_-5029850901860412058gmail_msg"><br class="m_-5029850901860412058gmail_msg"></div><div class="m_-5029850901860412058gmail_msg">try:<br class="m_-5029850901860412058gmail_msg"></div><div class="m_-5029850901860412058gmail_msg"><div class="m_-5029850901860412058gmail_msg">    par=soup.find(string=re.<wbr>compile(alumno))</div><div class="m_-5029850901860412058gmail_msg">    vot=par.find_next().get_text()</div><div class="m_-5029850901860412058gmail_msg">    titulo=soup.find('titulo').<wbr>get_text()</div><div class="m_-5029850901860412058gmail_msg">    </div><div class="m_-5029850901860412058gmail_msg">except AttributeError as e:</div><div class="m_-5029850901860412058gmail_msg">   if e.args=='NoneType':</div><div class="m_-5029850901860412058gmail_msg">       print('adasd')</div></div><div class="m_-5029850901860412058gmail_msg">sé capturar el AttributeError pero no sé como capturar solo el NoneType para que haga algo si eso ocurre.<br class="m_-5029850901860412058gmail_msg"></div><div class="m_-5029850901860412058gmail_msg">si no está el alumno, levanta Nonetype, pero no sé como capturarlo¿cómo se hace?</div><div class="m_-5029850901860412058gmail_msg"><br class="m_-5029850901860412058gmail_msg"></div></div></blockquote><div><br></div><div>Las excepciones no almacenan ninguna información sobre las circunsancias que las han originado. Aún es más, los mensajes que usan no son parte de la API de python, por lo que ni siquiera es seguro que no cambien en una futura versión de python. Ahora te dice que el objeto que da error es de tipo NoneType, pero no tendría obligación de decirte nada.<br><br></div><div>Las excepciones son poco más que objetos con los identificar de qué situaciones de error puedes recuperar la ejecución, y dejar el resto que sigan su curso. Si has identificado el tipo de error (AttributeError) lo que toca ahora es saber si ha sido algunos de los objetos que vigilas.<br><br></div><div>Aunque no sea nada elegante, no queda más remedio que comprobar que cada búsqueda efectivamente devuelve algún resultado antes de trabajar con ella, lo que impide el encadenamiento normal de operaciones como quieres hacer (algo que en lenguajes funcionales se resuelve muy bien con monads). La mejor manera de "encadenar" operaciones que puedan fallar es usando expresiones if..else:<br><br></div><div><div class="m_-5029850901860412058gmail_msg">    par = soup.find(string=re.compile(<wbr>alumno))</div><div class="m_-5029850901860412058gmail_msg">    vot = par.find_next() if par else None<br></div><div class="m_-5029850901860412058gmail_msg">    text = vot.get_text() if vot else None<br></div><div class="m_-5029850901860412058gmail_msg">    if text is None:<br></div><div class="m_-5029850901860412058gmail_msg">       print("No hay resultados")    <br></div><br><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_-5029850901860412058gmail_msg"><div class="m_-5029850901860412058gmail_msg"></div><br class="m_-5029850901860412058gmail_msg" clear="all"><div class="m_-5029850901860412058gmail_msg"><div class="m_-5029850901860412058m_-6177437788209191259gmail_signature m_-5029850901860412058gmail_msg">Saludos,<br class="m_-5029850901860412058gmail_msg">Gonzalo</div></div>
</div>
______________________________<wbr>_________________<br class="m_-5029850901860412058gmail_msg">
Python-es mailing list<br class="m_-5029850901860412058gmail_msg">
<a href="mailto:Python-es@python.org" class="m_-5029850901860412058gmail_msg" target="_blank">Python-es@python.org</a><br class="m_-5029850901860412058gmail_msg">
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" class="m_-5029850901860412058gmail_msg" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br class="m_-5029850901860412058gmail_msg">
</blockquote></div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr"><span>Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales": </span><a href="http://ch3m4.org/blog" target="_blank">http://blog.<wbr>ch3m4.org</a><br></div></div>
<br>______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
<br></blockquote></div></div>