El vie., 12 abr. 2019 a las 13:57, AGTUGO (<agt...@gmail.com>) escribió:
> 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. > Me había perdido entre renglones y listas. Entonces es más simple: rules = (rule1, rule2, rule3) sels = (2, 5, 6) def pred(register): return all(rule(register[idx]) for rule,idx in zip(rules, sels)) De todos modos, se puede hacer de muchas formas. Y complicarlo de muchas formas también. > > On Fri, Apr 12, 2019, 3:01 AM Chema Cortes <pych...@gmail.com> wrote: > >> >> El vie., 12 abr. 2019 a las 2:32, AGTUGO (<agt...@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 <pych...@gmail.com> wrote: >>> >>>> El mié., 10 abr. 2019 a las 4:21, AGTUGO (<agt...@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@python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >>> _______________________________________________ >>> Python-es mailing list >>> Python-es@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/> >> _______________________________________________ >> Python-es mailing list >> Python-es@python.org >> https://mail.python.org/mailman/listinfo/python-es >> > _______________________________________________ > Python-es mailing list > Python-es@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/>
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es