[Python-es] Operadores de comparacion como input de funcion para evitar comparaciones hardcoded

AGTUGO agtugo en gmail.com
Jue Abr 11 20:32:56 EDT 2019


Hola Mario,
Es un proyecto privado dejame ver si pyparsing esta aprobado para usarse,
me gusta la idea de crear reglas para filtrar, ahora que lo pienso pandas
debe de tener algo as'i, pero la verdad ya esta solucion sin dependencias
me e
sta funcionando excelente.

On Wed, Apr 10, 2019 at 7:53 AM Mario R. Osorio <nimbiotics en gmail.com>
wrote:

> Hola Agtugo,
>
> Quizas te interese echarle una mirada a la libreria pyparsing; a mi me fue
> de mucha ayuda en un proyecto muy similar. Aunque hay una curva de
> aprendizaje, estoy seguro que no te tomaria mas que algunas horas aprender
> a crear las reglas que necesitas aplicar. En realidad es muy intuitivo. Hay
> muchas librerias de similar utilidad, pero essta es la que tiene, en mi
> humilde opinion, la menos pronunciada curva de aprendizaje.
>
> La ventaja de esta solucion es que te permite la encapsulacion mas
> detallada de las reglas y acciones, haciendo mas facil realizar cambios en
> el futuro.
>
> Dtb/Gby
> =======
> Mario R. Osorio
> B.A.S. of Information Technology
> Web page: *http;//mario.osorio.solutions
> <http://http%3B//mario.osorio.solutions>*
> Email: *mario en osorio.solutions* <mario en osorio.solutions>
> *Just Choose Python!* <http://www.gentoogeek.org/files/choose_python.pdf>
>
> *SQL programmers don't die, they just ROLLBACK the TRANSACTION.*
>
>
>
> On Tue, Apr 9, 2019 at 10:22 PM AGTUGO <agtugo en gmail.com> wrote:
>
>> Hola Lista de python es espa;ol,
>>
>> Espero que les guste el formato de mi pregunta con comentarios
>>
>> import operator as op
>> from operator import itemgetter
>>
>> # Tengo que analizar varios CSVs y las "celdas" deben de cumplir ciertas
>> reglas
>> # en caso de que sea as'i todo el rengl'on es de utilidad y se guarda
>>
>> #Estas son las columnas de inter'es, se analizar'a renglon por rengl'on
>> idx_columns = (2,5,6)
>>
>> # Estas reglas pueden cambiar y las quiero lo menos "hardcoded posible"
>> # dentro de la funcion funct_to_receive # quiero hacer un set de reglas
>> # por cada csv por eso las quiero afuera de la funci'on para poderlas
>> cambiar
>> # si es posible un python file por cada csv, o un configuration file pero
>> no se
>> # como guardaria esas comparaciones en un string por ejemplo
>>
>> # ____________________AQUI ES LA PREGUNTA__________________
>> # ______Esta es la parte que me causa conflicto___________
>> # uso un set de reglas de comparacion que guardo en una lista
>> # pero siento que no lo estoy haciendo  de la forma correcta,
>> # es esta solucion muy hacky? poco pythonica?
>>
>> def rule1(ele):
>>     return ele == 'watermelon'
>> def rule2(ele):
>>     return ele != 'None'
>> def rule3(ele):
>>     return (ele == 'peach' or ele == '')
>>
>> #Esto lo uso como input en la funcion
>>
>> rules = [ rule1, rule2, rule3]
>>
>> # funcion que guarda cada renglon, busca en otra base de datos para
>> cotejar
>> # informacion y la convierte en diccionario para ser usada como entrada
>> # para un template de JINJA2 para generacion de codigo
>>
>> def func_to_receive(csv_file, idx_ele_tbc, rules):
>>     #To-do: Implementar
>>     pass
>>
>> #  Este es el caso para un solo renglon
>>
>> list_to_be_compared = ['apple', 'orange', 'watermelon', 'carrots', 'kiwi'
>> , 'None' , '']
>> #Aqui aislo solo los elementos que me interesan (celdas)
>> elements_to_be_compared = itemgetter(*idx_columns)(list_to_be_compared)
>>
>> #Aqui aplico las comparaciones la regla que le corresponde a cada columna
>>
>> list_comparisons = [rule(ele) for rule,ele in zip(rules,
>> elements_to_be_compared)]
>> all_comparison = all(list_comparisons)
>> print(all_comparison)
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>


-- 
Arturo Muñoz Tolosa
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20190411/27149687/attachment.html>


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