<div dir="auto"><div>En este caso cada regla se aplica a un elemento específico del registro, pero la posición siempre es la misma en todos los registros.<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 12, 2019, 3:01 AM Chema Cortes <<a href="mailto:pych3m4@gmail.com">pych3m4@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El vie., 12 abr. 2019 a las 2:32, AGTUGO (<<a href="mailto:agtugo@gmail.com" target="_blank" rel="noreferrer">agtugo@gmail.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div>Excelente respuesta, aunque no entiendo bien la parte de anidar los fors, ahi estas aplicando todas las reglas en todos los elementos del registro. Perdon por la respuesta rapida, </div></blockquote><div><br></div><div><div style="font-family:georgia,serif;font-size:large" class="gmail_default">He intentado <i>imitar</i> el código que habías puesto. No obstante, lo lógico es que cada regla se aplique a todo el registro y que de ahí seleccione los elementos que necesite comprobar.<br></div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 10, 2019 at 4:18 AM Chema Cortes <<a href="mailto:pych3m4@gmail.com" target="_blank" rel="noreferrer">pych3m4@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El mié., 10 abr. 2019 a las 4:21, AGTUGO (<<a href="mailto:agtugo@gmail.com" target="_blank" rel="noreferrer">agtugo@gmail.com</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Hola Lista de python es espa;ol, </div><div><br></div><div>Espero que les guste el formato de mi pregunta con comentarios</div><div><br></div><div><div>import operator as op</div><div>from operator import itemgetter</div><div><br></div><div># Tengo que analizar varios CSVs y las "celdas" deben de cumplir ciertas reglas </div><div># en caso de que sea as'i todo el rengl'on es de utilidad y se guarda</div></div></div></div></blockquote><div> </div><div><br></div><div style="font-family:georgia,serif;font-size:large"><div style="font-family:georgia,serif;font-size:large">En román paladino: quieres filtrar líneas de un texto CSV cuyos campos cumplan una serie de reglas.</div><div style="font-family:georgia,serif;font-size:large"><br></div><div style="font-size:large">
Intenta identificar cuáles son los <i>invariantes</i> del proceso y desacoplar lo que se pueda.
En este caso concreto, el procesado línea a línea de un fichero no debería depender de las reglas a aplicar ni de qué elementos concretos se
van a chequear. Lo mejor es asumir que en el procesado del fichero únicamente aplicar una regla por línea. Con ello, el trabajo se reduce a combinar varias reglas en una sola:<span style="font-family:monospace,monospace"><br></span></div><div style="font-size:large"><span style="font-family:monospace,monospace"></span><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace">rules = (rule1, rule2, rule3)<br></span></div><div><span style="font-family:monospace,monospace">sels = (2, 5, 6)<br></span></div><div><span style="font-family:monospace,monospace"><br></span></div><div><span style="font-family:monospace,monospace">def pred(register):</span></div><div><span style="font-family:monospace,monospace"> selector = itemgetter(*sels)<br></span></div><div><span style="font-family:monospace,monospace"> return all(rule(ele) <br></span></div><div><span style="font-family:monospace,monospace"> for rule in rules</span></div><div><span style="font-family:monospace,monospace"> for ele in selector(register))</span></div></div></div><div><br></div><div><br><div style="font-family:georgia,serif;font-size:large">A su vez, el fichero de reglas puede asumir que siempre actúa sobre un registro de elementos (una lista). Según como sea, puedes sacar estas reglas a otros ficheros con la idea de poder cambiar fácilmente de reglas cambiando unos ficheros por otros.</div><div style="font-family:georgia,serif;font-size:large"><br></div><div style="font-family:georgia,serif;font-size:large">Yendo más allá, podrías tener una colección de reglas predefinidas y crear con ellas conjuntos (RuleSets), y asociar un RuleSet para cada ficheros CSV.</div><div style="font-family:georgia,serif;font-size:large"><br></div><div style="font-family:georgia,serif;font-size:large">Las combinaciones son innumerables y se puede complicar todo lo que se quiera.<br></div><br></div><div> <br clear="all"></div></div><br>-- <br><div dir="ltr" class="m_2858280697192150899gmail-m_-8773100874345798378gmail-m_-8992907700096416098gmail_signature"><div dir="ltr"><div>Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": <a href="https://blog.ch3m4.org" target="_blank" rel="noreferrer">https://blog.ch3m4.org</a><br>Buscador Python Hispano: <a href="https://blog.ch3m4.org/pages/busqueda-python-es/" target="_blank" rel="noreferrer">http://busca.ch3m4.org</a></div></div></div></div>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank" rel="noreferrer">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="m_2858280697192150899gmail-m_-8773100874345798378gmail_signature">Arturo Muñoz Tolosa</div>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank" rel="noreferrer">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="m_2858280697192150899gmail_signature"><div dir="ltr"><div>Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": <a href="https://blog.ch3m4.org" target="_blank" rel="noreferrer">https://blog.ch3m4.org</a><br>Buscador Python Hispano: <a href="https://blog.ch3m4.org/pages/busqueda-python-es/" target="_blank" rel="noreferrer">http://busca.ch3m4.org</a></div></div></div></div>
_______________________________________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org" target="_blank" rel="noreferrer">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-es</a><br>
</blockquote></div></div></div>