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

Chema Cortes pych3m4 en gmail.com
Vie Abr 12 04:01:20 EDT 2019


El vie., 12 abr. 2019 a las 2:32, AGTUGO (<agtugo en gmail.com>) escribió:

>
> 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,
>

He intentado *imitar* 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.




>
> On Wed, Apr 10, 2019 at 4:18 AM Chema Cortes <pych3m4 en gmail.com> wrote:
>
>> El mié., 10 abr. 2019 a las 4:21, AGTUGO (<agtugo en gmail.com>) escribió:
>>
>>> 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
>>>
>>
>>
>> En román paladino: quieres filtrar líneas de un texto CSV cuyos campos
>> cumplan una serie de reglas.
>>
>> Intenta identificar cuáles son los *invariantes* 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:
>>
>> rules = (rule1, rule2, rule3)
>> sels = (2, 5, 6)
>>
>> def pred(register):
>>     selector = itemgetter(*sels)
>>     return all(rule(ele)
>>                for rule in rules
>>                for ele in selector(register))
>>
>>
>> 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.
>>
>> 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.
>>
>> Las combinaciones son innumerables y se puede complicar todo lo que se
>> quiera.
>>
>>
>>
>> --
>> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
>> https://blog.ch3m4.org
>> Buscador Python Hispano: http://busca.ch3m4.org
>> <https://blog.ch3m4.org/pages/busqueda-python-es/>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>
>
> --
> Arturo Muñoz Tolosa
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>


-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
https://blog.ch3m4.org
Buscador Python Hispano: http://busca.ch3m4.org
<https://blog.ch3m4.org/pages/busqueda-python-es/>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20190412/bf8dc216/attachment.html>


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