From pych3m4 en gmail.com Thu May 1 12:32:48 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Thu, 1 May 2014 12:32:48 +0200 Subject: [Python-es] =?utf-8?q?Herramienta_de_modelado_gr=C3=A1fico?= In-Reply-To: References: Message-ID: El 29 de abril de 2014, 23:02, Marco Herrarte escribió: > Buen dia a todos, > > Tengo como requerimiento desarrollar una herramienta web visual tipo > mindnode (Agregar nodos, relaciones, etc), pero enfocado a estructura > organizacional (Objetivos estratégicos, Puestos, Metas etc) > > He pensado montar algo en django, pero no tengo experiencia en lo visual, > alguien conoce alguna herramienta que pueda utilizar? > > Muchas gracias por su tiempo, > Normalmente, se utilizan librerías javascript como [Infovis][1] o [D3js][2]. Son complejos, pero permiten interaccionar con ellos. Si buscas algo más sencillo, te recomiendo que te mires algo basado en [graphviz][3]. Existen muchas utlidades tanto en javascript ([Canviz][4]) como para python y otros lenguajes. El propio django viene con una [extensión][5] para mostrar el modelo de datos en formato dot (formato de graphviz). En concreto, te puedes mirar la siguiente receta para hacer un diagrama organizacional en graphviz proviniente del libro ["The Graphviz Cookbook"][8] (todavía no disponible): "Creating an Org Chart with Graphviz": http://noumlaut.com/graphviz-cookbook-recipe-org-chart Una vez tengas el gráfico, se puede crear también un mapa de enlaces para la página web: dot test.dot -Tpng -o test.png -Tcmapx -o test.map [1]: http://thejit.org/ "JavaScript InfoVis Toolkit" [2]: http://d3js.org/ [3]: http://www.graphviz.org/ [4]: http://www.ryandesign.com/canviz/ "Canviz (graphviz en javascript)" [5]: https://code.djangoproject.com/wiki/DjangoGraphviz [6]: http://noumlaut.com/graphviz-cookbook [7]: http://noumlaut.com/graphviz-cookbook-recipe-org-chart "Creating an Org Chart with Graphviz" [8]: http://noumlaut.com/graphviz-cookbook "The Graphviz Cookbook" -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcea en jcea.es Thu May 1 15:01:01 2014 From: jcea en jcea.es (Jesus Cea) Date: Thu, 01 May 2014 15:01:01 +0200 Subject: [Python-es] =?iso-8859-15?q?=BFAlg=FAn_recurso_sobre_trucos_pr=E1?= =?iso-8859-15?q?cticos_y_ejemplos_realistas_de_testing=3F?= In-Reply-To: References: <52C2891F.803@jcea.es> <535845FD.3010702@jcea.es> <535C759A.4040900@jcea.es> Message-ID: <5362458D.5070101@jcea.es> On 27/04/14 18:46, Chema Cortes wrote: > Muy interesante este proyecto. Mis felicitaciones. ¿Tema para Z-podcast? :) Jeje. ¿Te animas a grabar? :-). ¿Tienes un micro decente? :) > El teorema CAP, aunque se asocia al almacenamiento de datos, en realidad > está formulado en términos de los mensajes que intercambian los nodos. > Aunque tus workers estén desacoplados, los tablones no lo están. Y > aunque sea un único tablón distribuido a través de spread, el mantenerlo > sincronizado hace que pierda disponibilidad y/o consistencia. Se pierde > disponibilidad cuando no llegan los mensajes de confirmación del último > cambio; se pierde consistencia cuando los nodos dejan de recibir los > mensajes de actualización. Lo que viene a decir el teorema CAP es que > siempre perderás uno u otro tipo de mensajes. Lo sé. Solo señalo que en mi caso CONCRETO no es un problema, la aplicación lo tolera. No es una solución general que, como indica el teorema CAP, simplemente no existe. -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 538 bytes Desc: OpenPGP digital signature URL: From marco.kuait en gmail.com Thu May 1 20:12:02 2014 From: marco.kuait en gmail.com (Marco Herrarte) Date: Thu, 1 May 2014 12:12:02 -0600 Subject: [Python-es] =?utf-8?q?Herramienta_de_modelado_gr=C3=A1fico?= In-Reply-To: References: Message-ID: Muchisimas gracias Chema, me ha servido para iniciar el proyecto Fantastica respuesta +10 El 1 de mayo de 2014, 4:32, Chema Cortes escribió: > El 29 de abril de 2014, 23:02, Marco Herrarte escribió: > > Buen dia a todos, >> >> Tengo como requerimiento desarrollar una herramienta web visual tipo >> mindnode (Agregar nodos, relaciones, etc), pero enfocado a estructura >> organizacional (Objetivos estratégicos, Puestos, Metas etc) >> >> He pensado montar algo en django, pero no tengo experiencia en lo visual, >> alguien conoce alguna herramienta que pueda utilizar? >> >> Muchas gracias por su tiempo, >> > > Normalmente, se utilizan librerías javascript como [Infovis][1] o > [D3js][2]. Son complejos, pero permiten interaccionar con ellos. > > Si buscas algo más sencillo, te recomiendo que te mires algo basado en > [graphviz][3]. Existen muchas utlidades tanto en javascript ([Canviz][4]) > como para python y otros lenguajes. El propio django viene con una > [extensión][5] para mostrar el modelo de datos en formato dot (formato de > graphviz). > > En concreto, te puedes mirar la siguiente receta para hacer un diagrama > organizacional en graphviz proviniente del libro ["The Graphviz > Cookbook"][8] (todavía no disponible): > > "Creating an Org Chart with Graphviz": > http://noumlaut.com/graphviz-cookbook-recipe-org-chart > > Una vez tengas el gráfico, se puede crear también un mapa de enlaces para > la página web: > > dot test.dot -Tpng -o test.png -Tcmapx -o test.map > > > > > [1]: http://thejit.org/ "JavaScript InfoVis Toolkit" > [2]: http://d3js.org/ > [3]: http://www.graphviz.org/ > [4]: http://www.ryandesign.com/canviz/ "Canviz (graphviz en javascript)" > [5]: https://code.djangoproject.com/wiki/DjangoGraphviz > [6]: http://noumlaut.com/graphviz-cookbook > [7]: http://noumlaut.com/graphviz-cookbook-recipe-org-chart "Creating an > Org Chart with Graphviz" > [8]: http://noumlaut.com/graphviz-cookbook "The Graphviz Cookbook" > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From cristiangodoyy en gmail.com Sat May 3 23:26:47 2014 From: cristiangodoyy en gmail.com (Cristian Godoy) Date: Sat, 3 May 2014 18:26:47 -0300 Subject: [Python-es] Consulta sobre interfaces y clases abstractas Message-ID: Hola vengo de programar en Java y recién estoy comenzando a conocer la sintaxis de Python. Quisiera saber si existen las interfaces y clases abstractas en Python. Muchas gracias. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jza en oooes.org Sun May 4 02:06:33 2014 From: jza en oooes.org (Alexandro Colorado) Date: Sat, 3 May 2014 19:06:33 -0500 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: En python todo es un objeto, aunque si hay abstraccion, quizas debas ver metodos abstractos en python http://stackoverflow.com/questions/4382945/abstract-methods-in-python Tambien checa ABC: https://docs.python.org/2/library/abc.html 2014-05-03 16:26 GMT-05:00 Cristian Godoy : > Hola vengo de programar en Java y recién estoy comenzando a conocer la > sintaxis de Python. Quisiera saber si existen las interfaces y clases > abstractas en Python. > Muchas gracias. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Alexandro Colorado Apache OpenOffice Contributor 882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614 ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From marcelobarbero en arnet.com.ar Sun May 4 15:33:49 2014 From: marcelobarbero en arnet.com.ar (Marcelo Barbero) Date: Sun, 4 May 2014 10:33:49 -0300 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: > De: Python-es [mailto:python-es-bounces+marcelobarbero=arnet.com.ar en python.org] En nombre de Cristian Godoy > Enviado el: sábado 3 de mayo de 2014 18:27 > Para: Python-es en python.org > Asunto: [Python-es] Consulta sobre interfaces y clases abstractas > Hola vengo de programar en Java y recién estoy comenzando a conocer la sintaxis de Python. > Quisiera saber si existen las interfaces y clases abstractas en Python. > Muchas gracias. Mi modesta opinión es que si querés aprender Python te acostumbres a la idiosincracia del lenguaje Python y dejes de lado las particularidades de Java. Para programar en Python no necesitás interfaces à la Java y el sistema de clases también es diferente. Tendrías que leer cualquier manual o libro de Python y habituarte a esas formas. Por ejemplo: si en el capítulo que te enseñan a crear clases, los campos son públicos y no hay "getters" ni "setters", pues entonces en Python lo normal es hacerlo así, y no importar conceptos de Java o C# innecesariamente. Otro ejemplo: si no encontrás una palabra reservada del tipo "switch" no es que se le olvidó al creador del lenguaje: se hace de otra forma en Python. Y así. Saludos. Marcelo From pych3m4 en gmail.com Sun May 4 17:40:25 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Sun, 4 May 2014 17:40:25 +0200 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: El 3 de mayo de 2014, 23:26, Cristian Godoy escribió: > Hola vengo de programar en Java y recién estoy comenzando a conocer la > sintaxis de Python. Quisiera saber si existen las interfaces y clases > abstractas en Python. > Muchas gracias. > > Las clases abstractas en python no son otra cosa que avisos que se hacen a quien las vaya a usar para que no las instancie y sólo las use para crear subclases. Pero python es un lenguaje dinámico, por lo que siempre será posible instanciar cualquier clase y siempre derivar subclases a partir de cualquier clase (hay formas de cambiar este comportamiento, pero son casos raros). En cuanto a los interfaces, en java se abusa de ellos para obtener algo de herencia múltiple. Python tiene herencia múltiple completa, por lo que añadir interfaces es añadir más clases a la herencia. Por otro lado, lo que sería usar interfaces como patrones estructurales de los atributos y métodos que debe tener un objeto, en python se conoce por "protocolo". Al ser dinámico, no existe chequeo de tipos de datos, por que hay diversas APIs que tan sólo esperan que los objetos cumplan con un protocolo determinado. Por ejemplo, muchas funciones esperan un objeto que se parezca a un objecto file, con métodos read() y write(), pero sin ser necesario que sean ficheros reales. De este modo, donde se pasaría un fichero, se puede pasar una url, la lectura de un puerto serie o un stream de memoria, Como es bastante tedioso andar comprobando los atributos y métodos que tiene un objeto para saber si cumple o no con determinado protocolo, la librería estándar facilita una colección de clases base abstractas (ABC-Abstract Base Classes) para poder fijar las relaciones entre clases, bien derivando de estas clases abstractas, bien registrando nuevas clases abstractas en esta jerarquía (siempre de un modo virtual). Tienes clases abstractas en los módulos io (streams), collections (estructuras de datos), numbers e importlib, así como crear nuevas con el mòdulo abc. Se supone que, con el tiempo, se irán ampliando. Por ejemplo: imagínate que tienes un fichero codificado que quieres que se codifique/decodifique al vuelo. Hay una clase abstracta llamada io.TextIOBase que ofrece el protocolo de fichero plano de texto. Tienes dos opciones: a) derivas tu clase a partir de esta clase abstracta, b) registra tu clase como subclase de la clase abstracta Opción 1: from io import TextIOBase class CryptoFile(TextIOBase): ... Opción2: from io import TextIOBase TextIOBase.register(CryptoFile) En esta opción, CryptoFile podría venir de otra librería que no fuera nuestra. En ambos casos se cumple: issubclass(CryptoFile, TextIOBase) isinstance(CryptoFile(...), TextIOBase) Donde se pueda pasar una instancia TextIOBase se podría pasar una instancia CryptoFile (no hay covariancias ni contravariancias en python). -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From davidmenhur en gmail.com Sun May 4 19:36:45 2014 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Sun, 4 May 2014 19:36:45 +0200 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: 2014-05-04 17:40 GMT+02:00 Chema Cortes : > Como es bastante tedioso andar comprobando los atributos y métodos que > tiene un objeto para saber si cumple o no con determinado protocolo, la > librería estándar facilita una colección de clases base abstractas > (ABC-Abstract Base Classes) para poder fijar las relaciones entre clases, > bien derivando de estas clases abstractas, bien registrando nuevas clases > abstractas en esta jerarquía (siempre de un modo virtual). Gracias por la explicación. Ahora entiendo la razón para usar ABC en lugar de ducktyping: son un certificado de que la clase incluye una serie de métodos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kausdiv en gmail.com Sun May 4 21:36:20 2014 From: kausdiv en gmail.com (kausdiv) Date: Sun, 04 May 2014 21:36:20 +0200 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux Message-ID: <536696B4.50106@gmail.com> Hola. Hasta ahora las pequeñas aplicaciones que he realizado han sido usando wxPython para Windows (uso py2exe). Este conjunto de pequeñas aplicaciones me gustaría saber como pasarlas a Linux, me han comentado algo de setuptools, pero no encuentro nada en español. Tengo una virtualización de xubuntu. Y me gustaría probar a descargar una de mis aplicaciones e instalarla. ¿ Alguna ayuda ? From mlacunza en gmail.com Sun May 4 22:45:00 2014 From: mlacunza en gmail.com (Mario Lacunza) Date: Sun, 4 May 2014 15:45:00 -0500 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: <536696B4.50106@gmail.com> References: <536696B4.50106@gmail.com> Message-ID: Cual es el problema? Sólo copia tu código fuente y correlo. Ubuntu viene con python pre instalado Enviado desde mi Samsung Galaxy S4 El may 4, 2014 2:43 PM, "kausdiv" escribió: > Hola. > > Hasta ahora las pequeñas aplicaciones que he realizado han sido usando > wxPython para Windows (uso py2exe). > > Este conjunto de pequeñas aplicaciones me gustaría saber como pasarlas a > Linux, me han comentado algo de setuptools, pero no encuentro nada en > español. > > Tengo una virtualización de xubuntu. Y me gustaría probar a descargar una > de mis aplicaciones e instalarla. > > ¿ Alguna ayuda ? > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Sun May 4 23:00:04 2014 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Sun, 4 May 2014 17:00:04 -0400 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> Message-ID: yo no creo que sea tan simple como copiar codigo y correrlo. Para un ejemplo sencillo, tal vez. Pero para aplicaciones mas complicadas, las cosas deben ir en su sitio. Por ejemplo, en RedHat: -- ficheros de configuracion en /etc/ -- librerias en /usr/lib/pythonX.Y/site-packages/ -- API en /usr/bin/ -- documentation in /usr/share/doc/ -- etc. Y todo depende de cada distro. Yo como trabajo en RedHat distribuyo mi codigo con RPMs. Recomendaria a kausdiv buscar en google algo tipo "distribute python applications on ubuntu" Saludos Jose (sin tildes) El día 4 de mayo de 2014, 16:45, Mario Lacunza escribió: > Cual es el problema? Sólo copia tu código fuente y correlo. Ubuntu viene > con python pre instalado > > Enviado desde mi Samsung Galaxy S4 > > El may 4, 2014 2:43 PM, "kausdiv" escribió: > >> Hola. >> >> Hasta ahora las pequeñas aplicaciones que he realizado han sido usando >> wxPython para Windows (uso py2exe). >> >> Este conjunto de pequeñas aplicaciones me gustaría saber como pasarlas a >> Linux, me han comentado algo de setuptools, pero no encuentro nada en >> español. >> >> Tengo una virtualización de xubuntu. Y me gustaría probar a descargar una >> de mis aplicaciones e instalarla. >> >> ¿ Alguna ayuda ? >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > From jjgomera en gmail.com Sun May 4 23:18:03 2014 From: jjgomera en gmail.com (=?UTF-8?B?SnVhbiBKb3PDqSBHw7NtZXogUm9tZXJh?=) Date: Sun, 4 May 2014 23:18:03 +0200 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> Message-ID: Son dos cosas diferentes, tu te refieres a empaquetar el software para una determinada distribución, algo realmente complejo, y que además solo nos servira para una distribución completa Pero para poder ejecutar un programa escrito en python con distribuir el código fuente es más que suficiente, y existen métodos bastante estandarizados, como pip (https://pypi.python.org/pypi) El 4 de mayo de 2014, 23:00, Jose Caballero escribió: > yo no creo que sea tan simple como copiar codigo y correrlo. Para un > ejemplo sencillo, tal vez. > Pero para aplicaciones mas complicadas, las cosas deben ir en su > sitio. Por ejemplo, en RedHat: > > -- ficheros de configuracion en /etc/ > -- librerias en /usr/lib/pythonX.Y/site-packages/ > -- API en /usr/bin/ > -- documentation in /usr/share/doc/ > -- etc. > > Y todo depende de cada distro. > Yo como trabajo en RedHat distribuyo mi codigo con RPMs. > Recomendaria a kausdiv buscar en google algo tipo "distribute python > applications on ubuntu" > > > Saludos > Jose (sin tildes) > > El día 4 de mayo de 2014, 16:45, Mario Lacunza > escribió: > > Cual es el problema? Sólo copia tu código fuente y correlo. Ubuntu viene > > con python pre instalado > > > > Enviado desde mi Samsung Galaxy S4 > > > > El may 4, 2014 2:43 PM, "kausdiv" escribió: > > > >> Hola. > >> > >> Hasta ahora las pequeñas aplicaciones que he realizado han sido usando > >> wxPython para Windows (uso py2exe). > >> > >> Este conjunto de pequeñas aplicaciones me gustaría saber como pasarlas a > >> Linux, me han comentado algo de setuptools, pero no encuentro nada en > >> español. > >> > >> Tengo una virtualización de xubuntu. Y me gustaría probar a descargar > una > >> de mis aplicaciones e instalarla. > >> > >> ¿ Alguna ayuda ? > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> https://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > https://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kausdiv en gmail.com Mon May 5 00:05:05 2014 From: kausdiv en gmail.com (kausdiv) Date: Mon, 05 May 2014 00:05:05 +0200 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> Message-ID: <5366B991.5060101@gmail.com> Se ha borrado un adjunto en formato HTML... URL: From mlacunza en gmail.com Mon May 5 00:33:52 2014 From: mlacunza en gmail.com (Mario Lacunza) Date: Sun, 4 May 2014 17:33:52 -0500 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> Message-ID: Debes explicar mejor q quieres hacer x lo q entiendo quieres hacer un paquete para la distro. Si es así cada una tiene su propia forma de crear un deb para debían y así. .leete los manuales adecuados Enviado desde mi Samsung Galaxy S4 El may 4, 2014 4:07 PM, "Jose Caballero" escribió: > yo no creo que sea tan simple como copiar codigo y correrlo. Para un > ejemplo sencillo, tal vez. > Pero para aplicaciones mas complicadas, las cosas deben ir en su > sitio. Por ejemplo, en RedHat: > > -- ficheros de configuracion en /etc/ > -- librerias en /usr/lib/pythonX.Y/site-packages/ > -- API en /usr/bin/ > -- documentation in /usr/share/doc/ > -- etc. > > Y todo depende de cada distro. > Yo como trabajo en RedHat distribuyo mi codigo con RPMs. > Recomendaria a kausdiv buscar en google algo tipo "distribute python > applications on ubuntu" > > > Saludos > Jose (sin tildes) > > El día 4 de mayo de 2014, 16:45, Mario Lacunza > escribió: > > Cual es el problema? Sólo copia tu código fuente y correlo. Ubuntu viene > > con python pre instalado > > > > Enviado desde mi Samsung Galaxy S4 > > > > El may 4, 2014 2:43 PM, "kausdiv" escribió: > > > >> Hola. > >> > >> Hasta ahora las pequeñas aplicaciones que he realizado han sido usando > >> wxPython para Windows (uso py2exe). > >> > >> Este conjunto de pequeñas aplicaciones me gustaría saber como pasarlas a > >> Linux, me han comentado algo de setuptools, pero no encuentro nada en > >> español. > >> > >> Tengo una virtualización de xubuntu. Y me gustaría probar a descargar > una > >> de mis aplicaciones e instalarla. > >> > >> ¿ Alguna ayuda ? > >> _______________________________________________ > >> Python-es mailing list > >> Python-es en python.org > >> https://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > https://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From mlacunza en gmail.com Mon May 5 00:35:20 2014 From: mlacunza en gmail.com (Mario Lacunza) Date: Sun, 4 May 2014 17:35:20 -0500 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: <5366B991.5060101@gmail.com> References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> Message-ID: Ah recién veo este correo. Mira también pip Enviado desde mi Samsung Galaxy S4 El may 4, 2014 5:05 PM, "kausdiv" escribió: > No es tan fácil como bajarte el código y correrlo. > > Por ejemplo, uno de mis programas usa pyDes para encritar y desencriptar, > además de wx ya que es una aplicación gráfica, y otras librerías propias > como mis-objetos.py > > Además supongamos que no quiero distribuir el código en "abierto". Y > tampoco queremos que el cliente final se mareé averiguando qué debe > instalar para que la aplicación corra. > > py2exe une todo lo necesario y lo deja en una carpeta "dist" listo para > distribuirlo. Lo que busco es algo parecido pero para Linux. > > Y tenía entendido que "distutils" y "SetupTools" podían hacerlo pero no > tengo información. Hay otra librería que empaqueta todo lo necesario para > crear el paquete "egg" para distribuirlo. > > Pero no se como.. > > De esto va la pregunta. :-( > > Saludos. > P.D.: > Esto lo acabo de encontrar ahora: > http://mundogeek.net/archivos/2008/09/23/distribuir-aplicaciones-python/ > > > > El 04/05/2014 23:18, Juan José Gómez Romera escribió: > > Son dos cosas diferentes, tu te refieres a empaquetar el software para > una determinada distribución, algo realmente complejo, y que además solo > nos servira para una distribución completa > > Pero para poder ejecutar un programa escrito en python con distribuir el > código fuente es más que suficiente, y existen métodos bastante > estandarizados, como pip (https://pypi.python.org/pypi) > > > El 4 de mayo de 2014, 23:00, Jose Caballero escribió: > >> yo no creo que sea tan simple como copiar codigo y correrlo. Para un >> ejemplo sencillo, tal vez. >> Pero para aplicaciones mas complicadas, las cosas deben ir en su >> sitio. Por ejemplo, en RedHat: >> >> -- ficheros de configuracion en /etc/ >> -- librerias en /usr/lib/pythonX.Y/site-packages/ >> -- API en /usr/bin/ >> -- documentation in /usr/share/doc/ >> -- etc. >> >> Y todo depende de cada distro. >> Yo como trabajo en RedHat distribuyo mi codigo con RPMs. >> Recomendaria a kausdiv buscar en google algo tipo "distribute python >> applications on ubuntu" >> >> >> Saludos >> Jose (sin tildes) >> >> El día 4 de mayo de 2014, 16:45, Mario Lacunza >> escribió: >> > Cual es el problema? Sólo copia tu código fuente y correlo. Ubuntu >> viene >> > con python pre instalado >> > >> > Enviado desde mi Samsung Galaxy S4 >> > >> > El may 4, 2014 2:43 PM, "kausdiv" escribió: >> > >> >> Hola. >> >> >> >> Hasta ahora las pequeñas aplicaciones que he realizado han sido usando >> >> wxPython para Windows (uso py2exe). >> >> >> >> Este conjunto de pequeñas aplicaciones me gustaría saber como pasarlas >> a >> >> Linux, me han comentado algo de setuptools, pero no encuentro nada en >> >> español. >> >> >> >> Tengo una virtualización de xubuntu. Y me gustaría probar a descargar >> una >> >> de mis aplicaciones e instalarla. >> >> >> >> ¿ Alguna ayuda ? >> >> _______________________________________________ >> >> Python-es mailing list >> >> Python-es en python.org >> >> https://mail.python.org/mailman/listinfo/python-es >> >> FAQ: http://python-es-faq.wikidot.com/ >> > >> > >> > _______________________________________________ >> > Python-es mailing list >> > Python-es en python.org >> > https://mail.python.org/mailman/listinfo/python-es >> > FAQ: http://python-es-faq.wikidot.com/ >> > >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > > _______________________________________________ > Python-es mailing listPython-es en python.orghttps://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From rmayorgav en gmail.com Mon May 5 01:42:11 2014 From: rmayorgav en gmail.com (Rodrigo Mayorga Vallejos) Date: Sun, 4 May 2014 20:42:11 -0300 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> Message-ID: Hola a todos. Creo que el tema no es de la portabilidad del código o de python propiamente tal. py2exe crea un ejecutable win32 y la pregunta es si ese ejecutable funciona en linux. Con WINE puedo ejecutar programas windows en linux y funciona muy bien. Tengo varios programas de consola y gráficos que funcionan sin problemas. Saludos. El may 4, 2014 6:35 p.m., "Mario Lacunza" escribió: > Ah recién veo este correo. Mira también pip > > Enviado desde mi Samsung Galaxy S4 > El may 4, 2014 5:05 PM, "kausdiv" escribió: > >> No es tan fácil como bajarte el código y correrlo. >> >> Por ejemplo, uno de mis programas usa pyDes para encritar y desencriptar, >> además de wx ya que es una aplicación gráfica, y otras librerías propias >> como mis-objetos.py >> >> Además supongamos que no quiero distribuir el código en "abierto". Y >> tampoco queremos que el cliente final se mareé averiguando qué debe >> instalar para que la aplicación corra. >> >> py2exe une todo lo necesario y lo deja en una carpeta "dist" listo para >> distribuirlo. Lo que busco es algo parecido pero para Linux. >> >> Y tenía entendido que "distutils" y "SetupTools" podían hacerlo pero no >> tengo información. Hay otra librería que empaqueta todo lo necesario para >> crear el paquete "egg" para distribuirlo. >> >> Pero no se como.. >> >> De esto va la pregunta. :-( >> >> Saludos. >> P.D.: >> Esto lo acabo de encontrar ahora: >> http://mundogeek.net/archivos/2008/09/23/distribuir-aplicaciones-python/ >> >> >> >> El 04/05/2014 23:18, Juan José Gómez Romera escribió: >> >> Son dos cosas diferentes, tu te refieres a empaquetar el software para >> una determinada distribución, algo realmente complejo, y que además solo >> nos servira para una distribución completa >> >> Pero para poder ejecutar un programa escrito en python con distribuir el >> código fuente es más que suficiente, y existen métodos bastante >> estandarizados, como pip (https://pypi.python.org/pypi) >> >> >> El 4 de mayo de 2014, 23:00, Jose Caballero escribió: >> >>> yo no creo que sea tan simple como copiar codigo y correrlo. Para un >>> ejemplo sencillo, tal vez. >>> Pero para aplicaciones mas complicadas, las cosas deben ir en su >>> sitio. Por ejemplo, en RedHat: >>> >>> -- ficheros de configuracion en /etc/ >>> -- librerias en /usr/lib/pythonX.Y/site-packages/ >>> -- API en /usr/bin/ >>> -- documentation in /usr/share/doc/ >>> -- etc. >>> >>> Y todo depende de cada distro. >>> Yo como trabajo en RedHat distribuyo mi codigo con RPMs. >>> Recomendaria a kausdiv buscar en google algo tipo "distribute python >>> applications on ubuntu" >>> >>> >>> Saludos >>> Jose (sin tildes) >>> >>> El día 4 de mayo de 2014, 16:45, Mario Lacunza >>> escribió: >>> > Cual es el problema? Sólo copia tu código fuente y correlo. Ubuntu >>> viene >>> > con python pre instalado >>> > >>> > Enviado desde mi Samsung Galaxy S4 >>> > >>> > El may 4, 2014 2:43 PM, "kausdiv" escribió: >>> > >>> >> Hola. >>> >> >>> >> Hasta ahora las pequeñas aplicaciones que he realizado han sido usando >>> >> wxPython para Windows (uso py2exe). >>> >> >>> >> Este conjunto de pequeñas aplicaciones me gustaría saber como >>> pasarlas a >>> >> Linux, me han comentado algo de setuptools, pero no encuentro nada en >>> >> español. >>> >> >>> >> Tengo una virtualización de xubuntu. Y me gustaría probar a descargar >>> una >>> >> de mis aplicaciones e instalarla. >>> >> >>> >> ¿ Alguna ayuda ? >>> >> _______________________________________________ >>> >> Python-es mailing list >>> >> Python-es en python.org >>> >> https://mail.python.org/mailman/listinfo/python-es >>> >> FAQ: http://python-es-faq.wikidot.com/ >>> > >>> > >>> > _______________________________________________ >>> > Python-es mailing list >>> > Python-es en python.org >>> > https://mail.python.org/mailman/listinfo/python-es >>> > FAQ: http://python-es-faq.wikidot.com/ >>> > >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >> >> >> >> _______________________________________________ >> Python-es mailing listPython-es en python.orghttps://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From rmayorgav en gmail.com Mon May 5 01:49:46 2014 From: rmayorgav en gmail.com (Rodrigo Mayorga Vallejos) Date: Sun, 4 May 2014 20:49:46 -0300 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> Message-ID: Tambien pyInstaller es otra alternativa. Soporta linux, windows y mac. El may 4, 2014 7:42 p.m., "Rodrigo Mayorga Vallejos" escribió: > Hola a todos. > > Creo que el tema no es de la portabilidad del código o de python > propiamente tal. py2exe crea un ejecutable win32 y la pregunta es si ese > ejecutable funciona en linux. > > Con WINE puedo ejecutar programas windows en linux y funciona muy bien. > Tengo varios programas de consola y gráficos que funcionan sin problemas. > > Saludos. > El may 4, 2014 6:35 p.m., "Mario Lacunza" escribió: > >> Ah recién veo este correo. Mira también pip >> >> Enviado desde mi Samsung Galaxy S4 >> El may 4, 2014 5:05 PM, "kausdiv" escribió: >> >>> No es tan fácil como bajarte el código y correrlo. >>> >>> Por ejemplo, uno de mis programas usa pyDes para encritar y >>> desencriptar, además de wx ya que es una aplicación gráfica, y otras >>> librerías propias como mis-objetos.py >>> >>> Además supongamos que no quiero distribuir el código en "abierto". Y >>> tampoco queremos que el cliente final se mareé averiguando qué debe >>> instalar para que la aplicación corra. >>> >>> py2exe une todo lo necesario y lo deja en una carpeta "dist" listo para >>> distribuirlo. Lo que busco es algo parecido pero para Linux. >>> >>> Y tenía entendido que "distutils" y "SetupTools" podían hacerlo pero no >>> tengo información. Hay otra librería que empaqueta todo lo necesario para >>> crear el paquete "egg" para distribuirlo. >>> >>> Pero no se como.. >>> >>> De esto va la pregunta. :-( >>> >>> Saludos. >>> P.D.: >>> Esto lo acabo de encontrar ahora: >>> http://mundogeek.net/archivos/2008/09/23/distribuir-aplicaciones-python/ >>> >>> >>> >>> El 04/05/2014 23:18, Juan José Gómez Romera escribió: >>> >>> Son dos cosas diferentes, tu te refieres a empaquetar el software para >>> una determinada distribución, algo realmente complejo, y que además solo >>> nos servira para una distribución completa >>> >>> Pero para poder ejecutar un programa escrito en python con distribuir >>> el código fuente es más que suficiente, y existen métodos bastante >>> estandarizados, como pip (https://pypi.python.org/pypi) >>> >>> >>> El 4 de mayo de 2014, 23:00, Jose Caballero escribió: >>> >>>> yo no creo que sea tan simple como copiar codigo y correrlo. Para un >>>> ejemplo sencillo, tal vez. >>>> Pero para aplicaciones mas complicadas, las cosas deben ir en su >>>> sitio. Por ejemplo, en RedHat: >>>> >>>> -- ficheros de configuracion en /etc/ >>>> -- librerias en /usr/lib/pythonX.Y/site-packages/ >>>> -- API en /usr/bin/ >>>> -- documentation in /usr/share/doc/ >>>> -- etc. >>>> >>>> Y todo depende de cada distro. >>>> Yo como trabajo en RedHat distribuyo mi codigo con RPMs. >>>> Recomendaria a kausdiv buscar en google algo tipo "distribute python >>>> applications on ubuntu" >>>> >>>> >>>> Saludos >>>> Jose (sin tildes) >>>> >>>> El día 4 de mayo de 2014, 16:45, Mario Lacunza >>>> escribió: >>>> > Cual es el problema? Sólo copia tu código fuente y correlo. Ubuntu >>>> viene >>>> > con python pre instalado >>>> > >>>> > Enviado desde mi Samsung Galaxy S4 >>>> > >>>> > El may 4, 2014 2:43 PM, "kausdiv" escribió: >>>> > >>>> >> Hola. >>>> >> >>>> >> Hasta ahora las pequeñas aplicaciones que he realizado han sido >>>> usando >>>> >> wxPython para Windows (uso py2exe). >>>> >> >>>> >> Este conjunto de pequeñas aplicaciones me gustaría saber como >>>> pasarlas a >>>> >> Linux, me han comentado algo de setuptools, pero no encuentro nada en >>>> >> español. >>>> >> >>>> >> Tengo una virtualización de xubuntu. Y me gustaría probar a >>>> descargar una >>>> >> de mis aplicaciones e instalarla. >>>> >> >>>> >> ¿ Alguna ayuda ? >>>> >> _______________________________________________ >>>> >> Python-es mailing list >>>> >> Python-es en python.org >>>> >> https://mail.python.org/mailman/listinfo/python-es >>>> >> FAQ: http://python-es-faq.wikidot.com/ >>>> > >>>> > >>>> > _______________________________________________ >>>> > Python-es mailing list >>>> > Python-es en python.org >>>> > https://mail.python.org/mailman/listinfo/python-es >>>> > FAQ: http://python-es-faq.wikidot.com/ >>>> > >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>> >>> >>> >>> _______________________________________________ >>> Python-es mailing listPython-es en python.orghttps://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kausdiv en gmail.com Mon May 5 07:41:26 2014 From: kausdiv en gmail.com (kausdiv) Date: Mon, 05 May 2014 07:41:26 +0200 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> Message-ID: <53672486.90008@gmail.com> Se ha borrado un adjunto en formato HTML... URL: From lastvnm en gmail.com Mon May 5 07:58:33 2014 From: lastvnm en gmail.com (Hiko hitokiri) Date: Sun, 4 May 2014 23:58:33 -0600 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: <53672486.90008@gmail.com> References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> <53672486.90008@gmail.com> Message-ID: lo mas fácil es crear un sh para que el funcione como acceso directo y ejecute el programa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Mon May 5 11:49:49 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Mon, 5 May 2014 11:49:49 +0200 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: El 4 de mayo de 2014, 19:36, Da?id escribió: > 2014-05-04 17:40 GMT+02:00 Chema Cortes : > > Como es bastante tedioso andar comprobando los atributos y métodos que >> tiene un objeto para saber si cumple o no con determinado protocolo, la >> librería estándar facilita una colección de clases base abstractas >> (ABC-Abstract Base Classes) para poder fijar las relaciones entre clases, >> bien derivando de estas clases abstractas, bien registrando nuevas clases >> abstractas en esta jerarquía (siempre de un modo virtual). > > > Gracias por la explicación. Ahora entiendo la razón para usar ABC en lugar > de ducktyping: son un certificado de que la clase incluye una serie de > métodos. > Bueno, certificar no certifican nada. Incluso si se pudiera comprobar que todo es correcto en el momento de registrar una subclase, nada impediría que se pudieran borrar los métodos y atributos más adelante. La idea es poder indicar que una clase responde a determinados "mensajes", aunque no posea explícitamente los métodos para gestionarlos. Por ejemplo, se podría hacerlo todo desde el método __getattribute__. No hay introspección que pueda saber qué hace ahí. -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From davidmenhur en gmail.com Mon May 5 12:22:21 2014 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Mon, 5 May 2014 12:22:21 +0200 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: Bueno, certificar en el mismo sentido que una universidad certifica un título: en algún momento supiste lo suficiente como para aprobar cada examen. O una promesa del programador de que la clase se va a comportar de forma parecida a una lista, archivo... On May 5, 2014 11:50 AM, "Chema Cortes" wrote: > El 4 de mayo de 2014, 19:36, Da?id escribió: > >> 2014-05-04 17:40 GMT+02:00 Chema Cortes : >> >> Como es bastante tedioso andar comprobando los atributos y métodos que >>> tiene un objeto para saber si cumple o no con determinado protocolo, la >>> librería estándar facilita una colección de clases base abstractas >>> (ABC-Abstract Base Classes) para poder fijar las relaciones entre clases, >>> bien derivando de estas clases abstractas, bien registrando nuevas clases >>> abstractas en esta jerarquía (siempre de un modo virtual). >> >> >> Gracias por la explicación. Ahora entiendo la razón para usar ABC en >> lugar de ducktyping: son un certificado de que la clase incluye una serie >> de métodos. >> > > Bueno, certificar no certifican nada. Incluso si se pudiera comprobar que > todo es correcto en el momento de registrar una subclase, nada impediría > que se pudieran borrar los métodos y atributos más adelante. > > La idea es poder indicar que una clase responde a determinados "mensajes", > aunque no posea explícitamente los métodos para gestionarlos. Por ejemplo, > se podría hacerlo todo desde el método __getattribute__. No hay > introspección que pueda saber qué hace ahí. > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Mon May 5 12:40:13 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Mon, 5 May 2014 12:40:13 +0200 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: <53672486.90008@gmail.com> References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> <53672486.90008@gmail.com> Message-ID: El 5 de mayo de 2014, 7:41, kausdiv escribió: > No pretendo ejecutar programas windows en Linux. > > Lo que decía en mi correo es que si existe algo "similar" a py2exe pero > para Linux, que empaquete todo en un archivo para que usuarios de linux se > lo descarguen e instalen sin más. > > He creado algunos programas y quiero dejarlos en la web para que se los > descargue quien quiera, y pretendo dejar versión para wind. y para linux. > > ¿ como hace la gente que genera aplicaciones para ambas plataformas ? (ya > sé en que en linux existen dos formas, las RPM y los APT) > > En una instalación desatendida, lo más complejo es empaquetar las librerías binarias, tal como pueden ser las wx en tu caso. Es más sencillo pedir al usuario que instale las dependencias según su distribución linux, e instalar luego los módulos que vayas a usar. Para ello, setuptools es el modo estándar y los eggs el formato común....HASTA AHORA. Te recomiendo que sigas la documentación que se encuentra en http://packaging.python.org Para empaquetar binarios, usa el formato wheels, soportado por pip, que es la herramienta para instalar paquetes que ya usa casi todo el mundo. No podrás subirlos, de momento, a PyPi para linux, pero no creo que te importe. En cuanto a lo de que el usuario no vea el código fuente, es algo que ya hemos hablado por aquí hace unas semanas y no voy a volver a comentarlo. -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From juanlu001 en gmail.com Mon May 5 13:37:00 2014 From: juanlu001 en gmail.com (Juan Luis Cano) Date: Mon, 05 May 2014 13:37:00 +0200 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> <53672486.90008@gmail.com> Message-ID: <536777DC.6020306@gmail.com> On 05/05/2014 12:40 PM, Chema Cortes wrote: > El 5 de mayo de 2014, 7:41, kausdiv > escribió: > > No pretendo ejecutar programas windows en Linux. > > Lo que decía en mi correo es que si existe algo "similar" a py2exe > pero para Linux, que empaquete todo en un archivo para que > usuarios de linux se lo descarguen e instalen sin más. > > He creado algunos programas y quiero dejarlos en la web para que > se los descargue quien quiera, y pretendo dejar versión para wind. > y para linux. > > ¿ como hace la gente que genera aplicaciones para ambas > plataformas ? (ya sé en que en linux existen dos formas, las RPM y > los APT) > > > En una instalación desatendida, lo más complejo es empaquetar las > librerías binarias, tal como pueden ser las wx en tu caso. Es más > sencillo pedir al usuario que instale las dependencias según su > distribución linux, e instalar luego los módulos que vayas a usar. > Para ello, setuptools es el modo estándar y los eggs el formato > común....HASTA AHORA. > > Te recomiendo que sigas la documentación que se encuentra en > http://packaging.python.org > > Para empaquetar binarios, usa el formato wheels, soportado por pip, > que es la herramienta para instalar paquetes que ya usa casi todo el > mundo. No podrás subirlos, de momento, a PyPi para linux, pero no creo > que te importe. > > En cuanto a lo de que el usuario no vea el código fuente, es algo que > ya hemos hablado por aquí hace unas semanas y no voy a volver a > comentarlo. > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es Yo nunca he usado ninguno de estos programas pero acabo de leer el anuncio de nueva versión de cx_Freeze: "cx_Freeze is a set of scripts and modules for freezing Python scripts into executables, in much the same way that py2exe and py2app do. Unlike these two tools, cx_Freeze is cross platform and should work on any platform that Python itself works on. It supports Python 2.6 or higher, including Python 3." Parece que cx_Freeze es como py2exe pero multiplataforma. ¡Tal vez te sirva! :) Juanlu ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From morillas en gmail.com Mon May 5 15:42:20 2014 From: morillas en gmail.com (Luis Miguel Morillas) Date: Mon, 5 May 2014 15:42:20 +0200 Subject: [Python-es] =?utf-8?q?Reconocer_n=C3=BAmeros_de_tel=C3=A9fono_en_?= =?utf-8?q?imagenes_png?= Message-ID: Quiero extraer números de teléfono de alguna página, por ejemplo [1] Esos números se muestran en la web como imágenes png. Alguna recomendación"barata" en computación? [1] http://www.fotocasa.es/Handlers/PhoneImageText.ashx?Text=0365EF51770289FD3C055FEADA3C9654 Saludos, -- luismiguel (@lmorillas) From davidmenhur en gmail.com Mon May 5 17:07:00 2014 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Mon, 5 May 2014 17:07:00 +0200 Subject: [Python-es] =?utf-8?q?Reconocer_n=C3=BAmeros_de_tel=C3=A9fono_en_?= =?utf-8?q?imagenes_png?= In-Reply-To: References: Message-ID: Google tiene un motor de OCR, Tesseract, y hay un wrapper en Python [1]. Si las imágenes son claras, debería leerlas sin problema. Si sabes que son números, y la calidad no es muy buena (tesseract no es preciso), restringiendo el número de hipótesis (son todo números) puedes entrenar una red neuronal o un SVM para obtenerlos. [1] https://code.google.com/p/python-tesseract/ On 5 May 2014 15:42, Luis Miguel Morillas wrote: > Quiero extraer números de teléfono de alguna página, por ejemplo [1] > Esos números se muestran en la web como imágenes png. Alguna > recomendación"barata" en computación? > > > [1] > http://www.fotocasa.es/Handlers/PhoneImageText.ashx?Text=0365EF51770289FD3C055FEADA3C9654 > > > Saludos, > > -- luismiguel (@lmorillas) > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From hfoffani en gmail.com Mon May 5 17:13:37 2014 From: hfoffani en gmail.com (=?iso-8859-1?Q?Hern=E1n_Foffani?=) Date: Mon, 5 May 2014 17:13:37 +0200 Subject: [Python-es] =?iso-8859-1?q?Reconocer_n=FAmeros_de_tel=E9fono_en_i?= =?iso-8859-1?q?magenes_png?= In-Reply-To: References: Message-ID: <18FC4A60-E2F9-4B03-9C87-0BE4FA41AF08@gmail.com> > Quiero extraer números de teléfono de alguna página, por ejemplo [1] > Esos números se muestran en la web como imágenes png. Alguna > recomendación"barata" en computación? > > > [1] http://www.fotocasa.es/Handlers/PhoneImageText.ashx?Text=0365EF51770289FD3C055FEADA3C9654 > A bote pronto te sugeriría un web scraper mas un OCR. Con el scraper obtienes solo las imágenes que deberían contener los teléfonos y luego el OCR te lo pasa a texto. Scrapy va bien para eso. Está escrito en Python y es extensible. Bibliotecas de OCR para Python hay unas cuantas. No te podría recomendar ninguna, en particular, porque en mi experiencia la performance y el error dependen muchísimo de qué están reconociendo. Es cuestión de probar, empieza por las que veas que tienen las API mas sencillas. Saludos, Hernán. From azotillo en gmail.com Mon May 5 19:57:46 2014 From: azotillo en gmail.com (Diego pascual lopez) Date: Mon, 5 May 2014 19:57:46 +0200 Subject: [Python-es] =?utf-8?q?Reconocer_n=C3=BAmeros_de_tel=C3=A9fono_en_?= =?utf-8?q?imagenes_png?= In-Reply-To: <18FC4A60-E2F9-4B03-9C87-0BE4FA41AF08@gmail.com> References: <18FC4A60-E2F9-4B03-9C87-0BE4FA41AF08@gmail.com> Message-ID: Buenas Luis, Yo use esto para resolver captchas y me fue bastante bien, mira a ver si te sirve. http://webscraping.com/blog/Solving-CAPTCHA/ Un saludo. 2014-05-05 17:13 GMT+02:00 Hernán Foffani : > > > Quiero extraer números de teléfono de alguna página, por ejemplo [1] > > Esos números se muestran en la web como imágenes png. Alguna > > recomendación"barata" en computación? > > > > > > [1] > http://www.fotocasa.es/Handlers/PhoneImageText.ashx?Text=0365EF51770289FD3C055FEADA3C9654 > > > > A bote pronto te sugeriría un web scraper mas un OCR. > Con el scraper obtienes solo las imágenes que deberían contener los > teléfonos > y luego el OCR te lo pasa a texto. > > Scrapy va bien para eso. Está escrito en Python y es extensible. > Bibliotecas de OCR para Python hay unas cuantas. > No te podría recomendar ninguna, en particular, porque en mi experiencia > la performance y el error dependen muchísimo de qué están reconociendo. Es > cuestión de probar, empieza por las que veas que tienen las API mas > sencillas. > > Saludos, > Hernán. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Mon May 5 20:39:22 2014 From: kikocorreoso en gmail.com (Kiko) Date: Mon, 5 May 2014 20:39:22 +0200 Subject: [Python-es] =?utf-8?q?Reconocer_n=C3=BAmeros_de_tel=C3=A9fono_en_?= =?utf-8?q?imagenes_png?= In-Reply-To: References: <18FC4A60-E2F9-4B03-9C87-0BE4FA41AF08@gmail.com> Message-ID: esto fue hype hace poco: http://projectnaptha.com/ Quizá se te ocurra algún uso interesante. El 5/5/14, Diego pascual lopez escribió: > Buenas Luis, > > Yo use esto para resolver captchas y me fue bastante bien, mira a ver si te > sirve. > > http://webscraping.com/blog/Solving-CAPTCHA/ > > Un saludo. > > > 2014-05-05 17:13 GMT+02:00 Hernán Foffani : > >> >> > Quiero extraer números de teléfono de alguna página, por ejemplo [1] >> > Esos números se muestran en la web como imágenes png. Alguna >> > recomendación"barata" en computación? >> > >> > >> > [1] >> http://www.fotocasa.es/Handlers/PhoneImageText.ashx?Text=0365EF51770289FD3C055FEADA3C9654 >> > >> >> A bote pronto te sugeriría un web scraper mas un OCR. >> Con el scraper obtienes solo las imágenes que deberían contener los >> teléfonos >> y luego el OCR te lo pasa a texto. >> >> Scrapy va bien para eso. Está escrito en Python y es extensible. >> Bibliotecas de OCR para Python hay unas cuantas. >> No te podría recomendar ninguna, en particular, porque en mi experiencia >> la performance y el error dependen muchísimo de qué están reconociendo. >> Es >> cuestión de probar, empieza por las que veas que tienen las API mas >> sencillas. >> >> Saludos, >> Hernán. >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > From kausdiv en gmail.com Mon May 5 23:28:22 2014 From: kausdiv en gmail.com (kausdiv) Date: Mon, 05 May 2014 23:28:22 +0200 Subject: [Python-es] Como hacer que las aplicaciones corran en Linux In-Reply-To: <536777DC.6020306@gmail.com> References: <536696B4.50106@gmail.com> <5366B991.5060101@gmail.com> <53672486.90008@gmail.com> <536777DC.6020306@gmail.com> Message-ID: <53680276.6080700@gmail.com> Se ha borrado un adjunto en formato HTML... URL: From jza en oooes.org Tue May 6 20:52:54 2014 From: jza en oooes.org (Alexandro Colorado) Date: Tue, 6 May 2014 13:52:54 -0500 Subject: [Python-es] Interesante observacion de los videos Message-ID: Dejando este articulos de revision de videos de python en O'Reilly http://marcanthonytaylor.com/intermediate-python/ Suenan interesantes. -- Alexandro Colorado Apache OpenOffice Contributor 882C 4389 3C27 E8DF 41B9 5C4C 1DB7 9D1C 7F4C 2614 From yourpadre en gmail.com Tue May 6 23:24:53 2014 From: yourpadre en gmail.com (Miguel Beltran R.) Date: Tue, 6 May 2014 16:24:53 -0500 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: Chema, si no lo tienes en tu blog, deberias agregarlo El 4 de mayo de 2014, 10:40, Chema Cortes escribió: > El 3 de mayo de 2014, 23:26, Cristian Godoy escribió: > > Hola vengo de programar en Java y recién estoy comenzando a conocer la >> sintaxis de Python. Quisiera saber si existen las interfaces y clases >> abstractas en Python. >> Muchas gracias. >> >> Las clases abstractas en python no son otra cosa que avisos que se hacen > a quien las vaya a usar para que no las instancie y sólo las use para crear > subclases. Pero python es un lenguaje dinámico, por lo que siempre será > posible instanciar cualquier clase y siempre derivar subclases a partir de > cualquier clase (hay formas de cambiar este comportamiento, pero son casos > raros). > > En cuanto a los interfaces, en java se abusa de ellos para obtener algo de > herencia múltiple. Python tiene herencia múltiple completa, por lo que > añadir interfaces es añadir más clases a la herencia. > > Por otro lado, lo que sería usar interfaces como patrones estructurales de > los atributos y métodos que debe tener un objeto, en python se conoce por > "protocolo". Al ser dinámico, no existe chequeo de tipos de datos, por que > hay diversas APIs que tan sólo esperan que los objetos cumplan con un > protocolo determinado. Por ejemplo, muchas funciones esperan un objeto que > se parezca a un objecto file, con métodos read() y write(), pero sin ser > necesario que sean ficheros reales. De este modo, donde se pasaría un > fichero, se puede pasar una url, la lectura de un puerto serie o un stream > de memoria, > > Como es bastante tedioso andar comprobando los atributos y métodos que > tiene un objeto para saber si cumple o no con determinado protocolo, la > librería estándar facilita una colección de clases base abstractas > (ABC-Abstract Base Classes) para poder fijar las relaciones entre clases, > bien derivando de estas clases abstractas, bien registrando nuevas clases > abstractas en esta jerarquía (siempre de un modo virtual). > > Tienes clases abstractas en los módulos io (streams), collections > (estructuras de datos), numbers e importlib, así como crear nuevas con el > mòdulo abc. Se supone que, con el tiempo, se irán ampliando. > > Por ejemplo: imagínate que tienes un fichero codificado que quieres que se > codifique/decodifique al vuelo. Hay una clase abstracta llamada > io.TextIOBase que ofrece el protocolo de fichero plano de texto. Tienes dos > opciones: a) derivas tu clase a partir de esta clase abstracta, b) registra > tu clase como subclase de la clase abstracta > > Opción 1: > > from io import TextIOBase > > class CryptoFile(TextIOBase): > ... > > Opción2: > > from io import TextIOBase > TextIOBase.register(CryptoFile) > > En esta opción, CryptoFile podría venir de otra librería que no fuera > nuestra. > > > En ambos casos se cumple: > > issubclass(CryptoFile, TextIOBase) > isinstance(CryptoFile(...), TextIOBase) > > > Donde se pueda pasar una instancia TextIOBase se podría pasar una > instancia CryptoFile (no hay covariancias ni contravariancias en python). > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- ________________________________________ Lo bueno de vivir un dia mas es saber que nos queda un dia menos de vida ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From cristiangodoyy en gmail.com Wed May 7 19:04:03 2014 From: cristiangodoyy en gmail.com (Cristian Godoy) Date: Wed, 7 May 2014 14:04:03 -0300 Subject: [Python-es] Consulta sobre interfaces y clases abstractas In-Reply-To: References: Message-ID: Muchas gracias por todos los comentarios, me han ayudado mucho. Saludos. El 6 de mayo de 2014, 18:24, Miguel Beltran R. escribió: > Chema, si no lo tienes en tu blog, deberias agregarlo > > > El 4 de mayo de 2014, 10:40, Chema Cortes escribió: > >> El 3 de mayo de 2014, 23:26, Cristian Godoy escribió: >> >> Hola vengo de programar en Java y recién estoy comenzando a conocer la >>> sintaxis de Python. Quisiera saber si existen las interfaces y clases >>> abstractas en Python. >>> Muchas gracias. >>> >>> Las clases abstractas en python no son otra cosa que avisos que se hacen >> a quien las vaya a usar para que no las instancie y sólo las use para crear >> subclases. Pero python es un lenguaje dinámico, por lo que siempre será >> posible instanciar cualquier clase y siempre derivar subclases a partir de >> cualquier clase (hay formas de cambiar este comportamiento, pero son casos >> raros). >> >> En cuanto a los interfaces, en java se abusa de ellos para obtener algo >> de herencia múltiple. Python tiene herencia múltiple completa, por lo que >> añadir interfaces es añadir más clases a la herencia. >> >> Por otro lado, lo que sería usar interfaces como patrones estructurales >> de los atributos y métodos que debe tener un objeto, en python se conoce >> por "protocolo". Al ser dinámico, no existe chequeo de tipos de datos, por >> que hay diversas APIs que tan sólo esperan que los objetos cumplan con un >> protocolo determinado. Por ejemplo, muchas funciones esperan un objeto que >> se parezca a un objecto file, con métodos read() y write(), pero sin ser >> necesario que sean ficheros reales. De este modo, donde se pasaría un >> fichero, se puede pasar una url, la lectura de un puerto serie o un stream >> de memoria, >> >> Como es bastante tedioso andar comprobando los atributos y métodos que >> tiene un objeto para saber si cumple o no con determinado protocolo, la >> librería estándar facilita una colección de clases base abstractas >> (ABC-Abstract Base Classes) para poder fijar las relaciones entre clases, >> bien derivando de estas clases abstractas, bien registrando nuevas clases >> abstractas en esta jerarquía (siempre de un modo virtual). >> >> Tienes clases abstractas en los módulos io (streams), collections >> (estructuras de datos), numbers e importlib, así como crear nuevas con el >> mòdulo abc. Se supone que, con el tiempo, se irán ampliando. >> >> Por ejemplo: imagínate que tienes un fichero codificado que quieres que >> se codifique/decodifique al vuelo. Hay una clase abstracta llamada >> io.TextIOBase que ofrece el protocolo de fichero plano de texto. Tienes dos >> opciones: a) derivas tu clase a partir de esta clase abstracta, b) registra >> tu clase como subclase de la clase abstracta >> >> Opción 1: >> >> from io import TextIOBase >> >> class CryptoFile(TextIOBase): >> ... >> >> Opción2: >> >> from io import TextIOBase >> TextIOBase.register(CryptoFile) >> >> En esta opción, CryptoFile podría venir de otra librería que no fuera >> nuestra. >> >> >> En ambos casos se cumple: >> >> issubclass(CryptoFile, TextIOBase) >> isinstance(CryptoFile(...), TextIOBase) >> >> >> Donde se pueda pasar una instancia TextIOBase se podría pasar una >> instancia CryptoFile (no hay covariancias ni contravariancias en python). >> >> >> -- >> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": >> http://ch3m4.org/blog >> Buscador Python Hispano: http://ch3m4.org/python-es >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > ________________________________________ > Lo bueno de vivir un dia mas > es saber que nos queda un dia menos de vida > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kausdiv en gmail.com Sun May 11 12:11:41 2014 From: kausdiv en gmail.com (kausdiv) Date: Sun, 11 May 2014 12:11:41 +0200 Subject: [Python-es] Editor, generador de informes Message-ID: <536F4CDD.80106@gmail.com> Hola.. Hasta ahora no había tenido la necesidad de imprimir nada con mis mini-aplicaciones, pero ahora si. Y no se qué usar para generar informes y usarlos con Python. He visto algo en google como ReportLab pero no hay editor, al parecer todo es código escrito. :-( (no es que esté en contra, es que me va a costar mucho más familiarizarme ya que todo en ingles) Me gustaría algo del estilo WYSIWYG, para generar informes desde bases de datos o sin ellas, que permita generar etiquetas, cartas, listados etc. ¿ Qué me recomendáis ? ¿ Qué usáis vosotros ? From pych3m4 en gmail.com Sun May 11 13:28:39 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Sun, 11 May 2014 13:28:39 +0200 Subject: [Python-es] Editor, generador de informes In-Reply-To: <536F4CDD.80106@gmail.com> References: <536F4CDD.80106@gmail.com> Message-ID: El 11 de mayo de 2014, 12:11, kausdiv escribió: > Hola.. > > Hasta ahora no había tenido la necesidad de imprimir nada con mis > mini-aplicaciones, pero ahora si. > > Y no se qué usar para generar informes y usarlos con Python. > He visto algo en google como ReportLab pero no hay editor, al parecer todo > es código escrito. :-( (no es que esté en contra, es que me va a costar > mucho más familiarizarme ya que todo en ingles) > > Me gustaría algo del estilo WYSIWYG, para generar informes desde bases de > datos o sin ellas, que permita generar etiquetas, cartas, listados etc. > > ¿ Qué me recomendáis ? > Una solución práctica es usar algunos de los interfaces para opendocument (openoffice/libreoffice/otros). Creas el informe con cualquiera de estas herramientas y lo rematas con python. Mírate Relatorio: http://python-relatorio.googlecode.com Es también similar a lo que hace OpenERP para sus informes con la librería Aeroo (https://launchpad.net/aeroo). Hay información en español, pero no creo que te resulte más simple: http://openerpspain.com/ > ¿ Qué usáis vosotros ? > ReportLab -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kausdiv en gmail.com Sun May 11 15:09:36 2014 From: kausdiv en gmail.com (kausdiv) Date: Sun, 11 May 2014 15:09:36 +0200 Subject: [Python-es] Editor, generador de informes In-Reply-To: References: <536F4CDD.80106@gmail.com> Message-ID: <536F7690.4070505@gmail.com> Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Sun May 11 16:12:39 2014 From: kikocorreoso en gmail.com (Kiko) Date: Sun, 11 May 2014 16:12:39 +0200 Subject: [Python-es] Editor, generador de informes In-Reply-To: <536F7690.4070505@gmail.com> References: <536F4CDD.80106@gmail.com> <536F7690.4070505@gmail.com> Message-ID: El 11 de mayo de 2014, 15:09, kausdiv escribió: > Gracias Chema por la respuesta tan rápida. > > Usas ReportLab, veo que se usa mucho. > ¿ Es complicado hacerse con él ? > No mucho. Si no necesitas documentos muy complicados se puede usar de forma muy sencilla. En una mañana estás haciendo documentos de complejidad media. > ¿ Merece la pena esforzarse un poco y hacerse con él antes que usar las > otras herramientas ? > [mode subjetivo ON] Sí. Aprender otras o ReportLab te quitará un tiempo similar y con ReportLab no necesitarás otras herramientas como con otras soluciones. [mode subjetivo OFF] Puedes leer una introducción es español aquí (es algo antiguo): http://elviajedelnavegante.blogspot.com.es/2010/03/crear-documentos-pdf-en-python-y-1.html http://elviajedelnavegante.blogspot.com.es/2010/03/crear-documentos-pdf-en-python-y-2.html http://elviajedelnavegante.blogspot.com.es/2010/04/crear-documentos-pdf-en-python-y-3.html Saludos. > > Saludos. > > > El 11/05/2014 13:28, Chema Cortes escribió: > > El 11 de mayo de 2014, 12:11, kausdiv escribió: > >> Hola.. >> >> Hasta ahora no había tenido la necesidad de imprimir nada con mis >> mini-aplicaciones, pero ahora si. >> >> Y no se qué usar para generar informes y usarlos con Python. >> He visto algo en google como ReportLab pero no hay editor, al parecer >> todo es código escrito. :-( (no es que esté en contra, es que me va a >> costar mucho más familiarizarme ya que todo en ingles) >> >> Me gustaría algo del estilo WYSIWYG, para generar informes desde bases de >> datos o sin ellas, que permita generar etiquetas, cartas, listados etc. >> >> ¿ Qué me recomendáis ? >> > > Una solución práctica es usar algunos de los interfaces para > opendocument (openoffice/libreoffice/otros). Creas el informe con > cualquiera de estas herramientas y lo rematas con python. > > Mírate Relatorio: http://python-relatorio.googlecode.com > > Es también similar a lo que hace OpenERP para sus informes con la > librería Aeroo (https://launchpad.net/aeroo). Hay información en español, > pero no creo que te resulte más simple: http://openerpspain.com/ > > > >> ¿ Qué usáis vosotros ? >> > > > ReportLab > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es > > > _______________________________________________ > Python-es mailing listPython-es en python.orghttps://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Sun May 11 22:37:57 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Sun, 11 May 2014 22:37:57 +0200 Subject: [Python-es] Editor, generador de informes In-Reply-To: <536F7690.4070505@gmail.com> References: <536F4CDD.80106@gmail.com> <536F7690.4070505@gmail.com> Message-ID: El 11 de mayo de 2014, 15:09, kausdiv escribió: > Gracias Chema por la respuesta tan rápida. > > Usas ReportLab, veo que se usa mucho. > ¿ Es complicado hacerse con él ? > ¿ Merece la pena esforzarse un poco y hacerse con él antes que usar las > otras herramientas ? > > ReportLab es muy utilizado en python, por lo que, tarde o temprano, te lo vas a encontrar para cualquier cosa que necesites sacar en PDF. No tiene herramienta de diseño visual, pero está bien documentado y fácil de hacerse con él para diseños sencillos. Existen pseudo-lenguajes para ReportLab que también podría mirar. Por ejemplo rst2pdf, un modo de crear documentos pdf a partir de RestructuredText, un lenguaje de marcas muy utilizado en python para documentación: http://ralsina.me/categories/rst2pdf.html http://ralsina.me/static/manual.pdf http://es.wikieducator.org/Usuario:Lmorillas/modulo_lenguajes_de_marcas/ligeros/rst > Saludos. > > > El 11/05/2014 13:28, Chema Cortes escribió: > > El 11 de mayo de 2014, 12:11, kausdiv escribió: > >> Hola.. >> >> Hasta ahora no había tenido la necesidad de imprimir nada con mis >> mini-aplicaciones, pero ahora si. >> >> Y no se qué usar para generar informes y usarlos con Python. >> He visto algo en google como ReportLab pero no hay editor, al parecer >> todo es código escrito. :-( (no es que esté en contra, es que me va a >> costar mucho más familiarizarme ya que todo en ingles) >> >> Me gustaría algo del estilo WYSIWYG, para generar informes desde bases de >> datos o sin ellas, que permita generar etiquetas, cartas, listados etc. >> >> ¿ Qué me recomendáis ? >> > > Una solución práctica es usar algunos de los interfaces para > opendocument (openoffice/libreoffice/otros). Creas el informe con > cualquiera de estas herramientas y lo rematas con python. > > Mírate Relatorio: http://python-relatorio.googlecode.com > > Es también similar a lo que hace OpenERP para sus informes con la > librería Aeroo (https://launchpad.net/aeroo). Hay información en español, > pero no creo que te resulte más simple: http://openerpspain.com/ > > > >> ¿ Qué usáis vosotros ? >> > > > ReportLab > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es > > > _______________________________________________ > Python-es mailing listPython-es en python.orghttps://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kausdiv en gmail.com Mon May 12 00:13:10 2014 From: kausdiv en gmail.com (kausdiv) Date: Mon, 12 May 2014 00:13:10 +0200 Subject: [Python-es] Editor, generador de informes In-Reply-To: References: <536F4CDD.80106@gmail.com> <536F7690.4070505@gmail.com> Message-ID: <536FF5F6.4040403@gmail.com> Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Tue May 13 07:23:37 2014 From: agtugo en gmail.com (AGTUGO) Date: Tue, 13 May 2014 00:23:37 -0500 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas Message-ID: Hola, He estado tratando de hacer implementacion solamente con panda de lo siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los mas entradillos con pandas espero que lo siguiente sea trivial. La entrada son datos tabulados de dos dimensiones o una matrix, la idea es formar todas las combinaciones, sin repetir y sin sustitución, de los renglones. La pareja de renglones se ponen en un solo renglon. Mi algoritmo actual es crear los indices de las combinaciones posibles, y despues crear la mezcla usando los indices. En codigo sería lo siguiente. #### combinaciones.py import numpy as np import itertools rows = 10 columns =5 data = np.arange(rows*columns).reshape(rows,columns) print('\n===Data===\n') print(data) to_mix = np.arange(rows) mixed = list(itertools.product(to_mix,to_mix)) combination = [x for x in mixed if (x[0]< x[1])] combination = np.array(combination) print('\n===Combination===\n') print(combination) final_data = np.hstack((data[combination[:,0],:],data[combination[:,1],:])) print('\n===Final Data===\n') print(final_data) Resultado: ===Data=== [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] ..., [35 36 37 38 39] [40 41 42 43 44] [45 46 47 48 49]] ===Combination=== [[0 1] [0 2] [0 3] ..., [7 8] [7 9] [8 9]] ===Final Data=== [[ 0 1 2 ..., 7 8 9] [ 0 1 2 ..., 12 13 14] [ 0 1 2 ..., 17 18 19] ..., [35 36 37 ..., 42 43 44] [35 36 37 ..., 47 48 49] [40 41 42 ..., 47 48 49]] Al parecer no es tan sencillo crear un nuevo dataframe usando los indices en panda. Espero que me puedan dar una orientación saludos. -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Tue May 13 09:12:28 2014 From: kikocorreoso en gmail.com (Kiko) Date: Tue, 13 May 2014 09:12:28 +0200 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: El 13 de mayo de 2014, 7:23, AGTUGO escribió: > Hola, > > He estado tratando de hacer implementacion solamente con panda de lo > siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los > mas entradillos con pandas espero que lo siguiente sea trivial. > > La entrada son datos tabulados de dos dimensiones o una matrix, la idea es > formar todas las combinaciones, sin repetir y sin sustitución, de los > renglones. La pareja de renglones se ponen en un solo renglon. > > Mi algoritmo actual es crear los indices de las combinaciones posibles, y > despues crear la mezcla usando los indices. En codigo sería lo siguiente. > > #### combinaciones.py > > > import numpy as np > import itertools > rows = 10 > columns =5 > data = np.arange(rows*columns).reshape(rows,columns) > print('\n===Data===\n') > print(data) > to_mix = np.arange(rows) > mixed = list(itertools.product(to_mix,to_mix)) > combination = [x for x in mixed if (x[0]< x[1])] > combination = np.array(combination) > print('\n===Combination===\n') > print(combination) > > > final_data = np.hstack((data[combination[:,0],:],data[combination[:,1],:])) > print('\n===Final Data===\n') > print(final_data) > > > No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array final que has obtenido? Sin usar numpy (que deberías tener instalado porque tienes Pandas instalado, repito): from itertools import combinations lista = [list(range(i,i+5)) for i in range(0,50,5)] final = [] for i in combinations(range(10),2): final.append(lista[i[0]]+lista[i[1]]) df = pd.DataFrame(final, columns = range(10)) > > > Resultado: > > ===Data=== > > [[ 0 1 2 3 4] > [ 5 6 7 8 9] > [10 11 12 13 14] > ..., > [35 36 37 38 39] > [40 41 42 43 44] > [45 46 47 48 49]] > > ===Combination=== > > [[0 1] > [0 2] > [0 3] > ..., > [7 8] > [7 9] > [8 9]] > > ===Final Data=== > > [[ 0 1 2 ..., 7 8 9] > [ 0 1 2 ..., 12 13 14] > [ 0 1 2 ..., 17 18 19] > ..., > [35 36 37 ..., 42 43 44] > [35 36 37 ..., 47 48 49] > [40 41 42 ..., 47 48 49]] > > > > > Al parecer no es tan sencillo crear un nuevo dataframe usando los indices > en panda. Espero que me puedan dar una orientación saludos. > > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Tue May 13 18:31:14 2014 From: agtugo en gmail.com (AGTUGO) Date: Tue, 13 May 2014 11:31:14 -0500 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: Entiendo el punto pero tengo que pasar por un array intermedio. La idea es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar el dataframe con las combinaciones, el método actual sería: 1.- Importar csv en dataframe 2.- Crear un array del dataframe 3.- Crear los indices de las combinaciones 4.- Usar la notacion de indices para crear el array 5.- Crear el dataset a partir del array Método buscado: 1.- Importar csv en dataframe 2.- Crear indices de las combinaciones 3.- Usar "algo" usando los indices para crear el dataframe nuevo a partir del dataframe viejo 2014-05-13 2:12 GMT-05:00 Kiko : > > > > El 13 de mayo de 2014, 7:23, AGTUGO escribió: > > Hola, >> >> He estado tratando de hacer implementacion solamente con panda de lo >> siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los >> mas entradillos con pandas espero que lo siguiente sea trivial. >> >> La entrada son datos tabulados de dos dimensiones o una matrix, la idea >> es formar todas las combinaciones, sin repetir y sin sustitución, de los >> renglones. La pareja de renglones se ponen en un solo renglon. >> >> Mi algoritmo actual es crear los indices de las combinaciones posibles, y >> despues crear la mezcla usando los indices. En codigo sería lo siguiente. >> >> #### combinaciones.py >> >> >> import numpy as np >> import itertools >> rows = 10 >> columns =5 >> data = np.arange(rows*columns).reshape(rows,columns) >> print('\n===Data===\n') >> print(data) >> to_mix = np.arange(rows) >> mixed = list(itertools.product(to_mix,to_mix)) >> combination = [x for x in mixed if (x[0]< x[1])] >> combination = np.array(combination) >> print('\n===Combination===\n') >> print(combination) >> >> >> final_data = >> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >> print('\n===Final Data===\n') >> print(final_data) >> >> >> > No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes > Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array > final que has obtenido? > > Sin usar numpy (que deberías tener instalado porque tienes Pandas > instalado, repito): > > from itertools import combinations > > lista = [list(range(i,i+5)) for i in range(0,50,5)] > final = [] > for i in combinations(range(10),2): > final.append(lista[i[0]]+lista[i[1]]) > df = pd.DataFrame(final, columns = range(10)) > > >> >> >> Resultado: >> >> ===Data=== >> >> [[ 0 1 2 3 4] >> [ 5 6 7 8 9] >> [10 11 12 13 14] >> ..., >> [35 36 37 38 39] >> [40 41 42 43 44] >> [45 46 47 48 49]] >> >> ===Combination=== >> >> [[0 1] >> [0 2] >> [0 3] >> ..., >> [7 8] >> [7 9] >> [8 9]] >> >> ===Final Data=== >> >> [[ 0 1 2 ..., 7 8 9] >> [ 0 1 2 ..., 12 13 14] >> [ 0 1 2 ..., 17 18 19] >> ..., >> [35 36 37 ..., 42 43 44] >> [35 36 37 ..., 47 48 49] >> [40 41 42 ..., 47 48 49]] >> >> >> >> >> Al parecer no es tan sencillo crear un nuevo dataframe usando los indices >> en panda. Espero que me puedan dar una orientación saludos. >> >> >> >> -- >> Arturo Muñoz Tolosa >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Tue May 13 19:16:26 2014 From: kikocorreoso en gmail.com (Kiko) Date: Tue, 13 May 2014 19:16:26 +0200 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: El 13 de mayo de 2014, 18:31, AGTUGO escribió: > Entiendo el punto pero tengo que pasar por un array intermedio. La idea es > agarrar un archivo csv direcatamente a un dataframe y de ahi sacar el > dataframe con las combinaciones, el método actual sería: > > 1.- Importar csv en dataframe > 2.- Crear un array del dataframe > 3.- Crear los indices de las combinaciones > 4.- Usar la notacion de indices para crear el array > 5.- Crear el dataset a partir del array > > Método buscado: > > 1.- Importar csv en dataframe > 2.- Crear indices de las combinaciones > 3.- Usar "algo" usando los indices para crear el dataframe nuevo a partir > del dataframe viejo > > > import pandas as pd from itertools import combinations #Suponemos que este dataframe viene de leerlo con un pd.read_csv() #Lo dejo así por simplificar df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], columns = range(5)) #creamos el dataframe de destino con 10 columnas df1 = pd.DataFrame(columns = range(10)) # De esta forma estás usando los índices del dataframe df0 para hacer las combinaciones for i,j in enumerate(combinations(df0.index,2)): df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo complicado e innecesario lo que quieres hacer (a no ser que sea un ejercicio para clase y entonces podría entender lo rebuscado del asunto). Saludos. > > 2014-05-13 2:12 GMT-05:00 Kiko : > > >> >> >> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >> >> Hola, >>> >>> He estado tratando de hacer implementacion solamente con panda de lo >>> siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los >>> mas entradillos con pandas espero que lo siguiente sea trivial. >>> >>> La entrada son datos tabulados de dos dimensiones o una matrix, la idea >>> es formar todas las combinaciones, sin repetir y sin sustitución, de los >>> renglones. La pareja de renglones se ponen en un solo renglon. >>> >>> Mi algoritmo actual es crear los indices de las combinaciones posibles, >>> y despues crear la mezcla usando los indices. En codigo sería lo siguiente. >>> >>> #### combinaciones.py >>> >>> >>> import numpy as np >>> import itertools >>> rows = 10 >>> columns =5 >>> data = np.arange(rows*columns).reshape(rows,columns) >>> print('\n===Data===\n') >>> print(data) >>> to_mix = np.arange(rows) >>> mixed = list(itertools.product(to_mix,to_mix)) >>> combination = [x for x in mixed if (x[0]< x[1])] >>> combination = np.array(combination) >>> print('\n===Combination===\n') >>> print(combination) >>> >>> >>> final_data = >>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>> print('\n===Final Data===\n') >>> print(final_data) >>> >>> >>> >> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >> final que has obtenido? >> >> Sin usar numpy (que deberías tener instalado porque tienes Pandas >> instalado, repito): >> >> from itertools import combinations >> >> lista = [list(range(i,i+5)) for i in range(0,50,5)] >> final = [] >> for i in combinations(range(10),2): >> final.append(lista[i[0]]+lista[i[1]]) >> df = pd.DataFrame(final, columns = range(10)) >> >> >>> >>> >>> Resultado: >>> >>> ===Data=== >>> >>> [[ 0 1 2 3 4] >>> [ 5 6 7 8 9] >>> [10 11 12 13 14] >>> ..., >>> [35 36 37 38 39] >>> [40 41 42 43 44] >>> [45 46 47 48 49]] >>> >>> ===Combination=== >>> >>> [[0 1] >>> [0 2] >>> [0 3] >>> ..., >>> [7 8] >>> [7 9] >>> [8 9]] >>> >>> ===Final Data=== >>> >>> [[ 0 1 2 ..., 7 8 9] >>> [ 0 1 2 ..., 12 13 14] >>> [ 0 1 2 ..., 17 18 19] >>> ..., >>> [35 36 37 ..., 42 43 44] >>> [35 36 37 ..., 47 48 49] >>> [40 41 42 ..., 47 48 49]] >>> >>> >>> >>> >>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>> indices en panda. Espero que me puedan dar una orientación saludos. >>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Tue May 13 20:05:57 2014 From: agtugo en gmail.com (AGTUGO) Date: Tue, 13 May 2014 13:05:57 -0500 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: Muchas gracias, no es para clase. Es un programa para calcular la vida minima de un componente mecánico, entonces debo buscar la vida minima buscando todas las posibles combinaciones y despues hacer calculos. Esta rutina la hago varias veces con algunas variaciones, y con el dataframe es mas facil visualizar. Cuando paso a un array pierdo un poco de informacion de los headers, y la tengo que extraer y volver a meter. En mi opinion estar cambiando de tipos de datos aumenta la probabilidad de errores y la lectura posterior. Es más o menos el ya discutido problema de evitar el tipo matrix en numpy y solamente usar arrays aunque sea no tan transparente las operaciones matriciales. 2014-05-13 12:16 GMT-05:00 Kiko : > > > > El 13 de mayo de 2014, 18:31, AGTUGO escribió: > > Entiendo el punto pero tengo que pasar por un array intermedio. La idea >> es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar el >> dataframe con las combinaciones, el método actual sería: >> >> 1.- Importar csv en dataframe >> 2.- Crear un array del dataframe >> 3.- Crear los indices de las combinaciones >> 4.- Usar la notacion de indices para crear el array >> 5.- Crear el dataset a partir del array >> >> Método buscado: >> >> 1.- Importar csv en dataframe >> 2.- Crear indices de las combinaciones >> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a partir >> del dataframe viejo >> >> >> import pandas as pd > from itertools import combinations > > #Suponemos que este dataframe viene de leerlo con un pd.read_csv() > #Lo dejo así por simplificar > df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], columns = > range(5)) > > #creamos el dataframe de destino con 10 columnas > df1 = pd.DataFrame(columns = range(10)) > > # De esta forma estás usando los índices del dataframe df0 para hacer las > combinaciones > for i,j in enumerate(combinations(df0.index,2)): > df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) > > El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo > complicado e innecesario lo que quieres hacer (a no ser que sea un > ejercicio para clase y entonces podría entender lo rebuscado del asunto). > > Saludos. > > >> >> 2014-05-13 2:12 GMT-05:00 Kiko : >> >> >>> >>> >>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>> >>> Hola, >>>> >>>> He estado tratando de hacer implementacion solamente con panda de lo >>>> siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los >>>> mas entradillos con pandas espero que lo siguiente sea trivial. >>>> >>>> La entrada son datos tabulados de dos dimensiones o una matrix, la idea >>>> es formar todas las combinaciones, sin repetir y sin sustitución, de los >>>> renglones. La pareja de renglones se ponen en un solo renglon. >>>> >>>> Mi algoritmo actual es crear los indices de las combinaciones posibles, >>>> y despues crear la mezcla usando los indices. En codigo sería lo siguiente. >>>> >>>> #### combinaciones.py >>>> >>>> >>>> import numpy as np >>>> import itertools >>>> rows = 10 >>>> columns =5 >>>> data = np.arange(rows*columns).reshape(rows,columns) >>>> print('\n===Data===\n') >>>> print(data) >>>> to_mix = np.arange(rows) >>>> mixed = list(itertools.product(to_mix,to_mix)) >>>> combination = [x for x in mixed if (x[0]< x[1])] >>>> combination = np.array(combination) >>>> print('\n===Combination===\n') >>>> print(combination) >>>> >>>> >>>> final_data = >>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>> print('\n===Final Data===\n') >>>> print(final_data) >>>> >>>> >>>> >>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>> final que has obtenido? >>> >>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>> instalado, repito): >>> >>> from itertools import combinations >>> >>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>> final = [] >>> for i in combinations(range(10),2): >>> final.append(lista[i[0]]+lista[i[1]]) >>> df = pd.DataFrame(final, columns = range(10)) >>> >>> >>>> >>>> >>>> Resultado: >>>> >>>> ===Data=== >>>> >>>> [[ 0 1 2 3 4] >>>> [ 5 6 7 8 9] >>>> [10 11 12 13 14] >>>> ..., >>>> [35 36 37 38 39] >>>> [40 41 42 43 44] >>>> [45 46 47 48 49]] >>>> >>>> ===Combination=== >>>> >>>> [[0 1] >>>> [0 2] >>>> [0 3] >>>> ..., >>>> [7 8] >>>> [7 9] >>>> [8 9]] >>>> >>>> ===Final Data=== >>>> >>>> [[ 0 1 2 ..., 7 8 9] >>>> [ 0 1 2 ..., 12 13 14] >>>> [ 0 1 2 ..., 17 18 19] >>>> ..., >>>> [35 36 37 ..., 42 43 44] >>>> [35 36 37 ..., 47 48 49] >>>> [40 41 42 ..., 47 48 49]] >>>> >>>> >>>> >>>> >>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>> >>>> >>>> >>>> -- >>>> Arturo Muñoz Tolosa >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> >> -- >> Arturo Muñoz Tolosa >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Tue May 13 20:09:21 2014 From: kikocorreoso en gmail.com (Kiko) Date: Tue, 13 May 2014 20:09:21 +0200 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: El 13 de mayo de 2014, 20:05, AGTUGO escribió: > > Muchas gracias, no es para clase. Es un programa para calcular la vida > minima de un componente mecánico, entonces debo buscar la vida minima > buscando todas las posibles combinaciones y despues hacer calculos. Esta > rutina la hago varias veces con algunas variaciones, y con el dataframe es > mas facil visualizar. > > Cuando paso a un array pierdo un poco de informacion de los headers, y la > tengo que extraer y volver a meter. En mi opinion estar cambiando de tipos > de datos aumenta la probabilidad de errores y la lectura posterior. Es más > o menos el ya discutido problema de evitar el tipo matrix en numpy y > solamente usar arrays aunque sea no tan transparente las operaciones > matriciales. > > > Pues si te ha funcionado, perfecto, y si no es lo que buscabas seguimos iterando. Saludos. > 2014-05-13 12:16 GMT-05:00 Kiko : > > >> >> >> El 13 de mayo de 2014, 18:31, AGTUGO escribió: >> >> Entiendo el punto pero tengo que pasar por un array intermedio. La idea >>> es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar el >>> dataframe con las combinaciones, el método actual sería: >>> >>> 1.- Importar csv en dataframe >>> 2.- Crear un array del dataframe >>> 3.- Crear los indices de las combinaciones >>> 4.- Usar la notacion de indices para crear el array >>> 5.- Crear el dataset a partir del array >>> >>> Método buscado: >>> >>> 1.- Importar csv en dataframe >>> 2.- Crear indices de las combinaciones >>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>> partir del dataframe viejo >>> >>> >>> import pandas as pd >> from itertools import combinations >> >> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >> #Lo dejo así por simplificar >> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], columns = >> range(5)) >> >> #creamos el dataframe de destino con 10 columnas >> df1 = pd.DataFrame(columns = range(10)) >> >> # De esta forma estás usando los índices del dataframe df0 para hacer las >> combinaciones >> for i,j in enumerate(combinations(df0.index,2)): >> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >> >> El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo >> complicado e innecesario lo que quieres hacer (a no ser que sea un >> ejercicio para clase y entonces podría entender lo rebuscado del asunto). >> >> Saludos. >> >> >>> >>> 2014-05-13 2:12 GMT-05:00 Kiko : >>> >>> >>>> >>>> >>>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>>> >>>> Hola, >>>>> >>>>> He estado tratando de hacer implementacion solamente con panda de lo >>>>> siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los >>>>> mas entradillos con pandas espero que lo siguiente sea trivial. >>>>> >>>>> La entrada son datos tabulados de dos dimensiones o una matrix, la >>>>> idea es formar todas las combinaciones, sin repetir y sin sustitución, de >>>>> los renglones. La pareja de renglones se ponen en un solo renglon. >>>>> >>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>> siguiente. >>>>> >>>>> #### combinaciones.py >>>>> >>>>> >>>>> import numpy as np >>>>> import itertools >>>>> rows = 10 >>>>> columns =5 >>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>> print('\n===Data===\n') >>>>> print(data) >>>>> to_mix = np.arange(rows) >>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>> combination = np.array(combination) >>>>> print('\n===Combination===\n') >>>>> print(combination) >>>>> >>>>> >>>>> final_data = >>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>> print('\n===Final Data===\n') >>>>> print(final_data) >>>>> >>>>> >>>>> >>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>> final que has obtenido? >>>> >>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>> instalado, repito): >>>> >>>> from itertools import combinations >>>> >>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>> final = [] >>>> for i in combinations(range(10),2): >>>> final.append(lista[i[0]]+lista[i[1]]) >>>> df = pd.DataFrame(final, columns = range(10)) >>>> >>>> >>>>> >>>>> >>>>> Resultado: >>>>> >>>>> ===Data=== >>>>> >>>>> [[ 0 1 2 3 4] >>>>> [ 5 6 7 8 9] >>>>> [10 11 12 13 14] >>>>> ..., >>>>> [35 36 37 38 39] >>>>> [40 41 42 43 44] >>>>> [45 46 47 48 49]] >>>>> >>>>> ===Combination=== >>>>> >>>>> [[0 1] >>>>> [0 2] >>>>> [0 3] >>>>> ..., >>>>> [7 8] >>>>> [7 9] >>>>> [8 9]] >>>>> >>>>> ===Final Data=== >>>>> >>>>> [[ 0 1 2 ..., 7 8 9] >>>>> [ 0 1 2 ..., 12 13 14] >>>>> [ 0 1 2 ..., 17 18 19] >>>>> ..., >>>>> [35 36 37 ..., 42 43 44] >>>>> [35 36 37 ..., 47 48 49] >>>>> [40 41 42 ..., 47 48 49]] >>>>> >>>>> >>>>> >>>>> >>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>>> >>>>> >>>>> >>>>> -- >>>>> Arturo Muñoz Tolosa >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Tue May 13 20:52:21 2014 From: agtugo en gmail.com (AGTUGO) Date: Tue, 13 May 2014 13:52:21 -0500 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: Pues aqui tengo el siguiente codigo donde no necesito crear un array intermedio. Creo que la mejor opcion es simplemente usar ix para tener indexing tipo numpy, ¿Que opinas Kiko? import numpy as np import itertools ## tamaño de los renglones y columnas de los datos tabulados rows = 10 columns =5 ## informacion proporcionada en forma tabulada aqui estoy simulando el csv data = np.arange(rows*columns).reshape(rows,columns) data_pa = pd.DataFrame(data, columns = ('A','B','C','D','E')) display(data_pa) ## lo siguiente crea los indices de las combinaciones to_mix = np.arange(rows) mixed = list(itertools.product(to_mix,to_mix)) combination = [x for x in mixed if (x[0]< x[1])] combination = np.array(combination) # separo los indices en dos variables index1_comb = combination[:,0] index2_comb = combination[:,1] #creo dos dataframes con los indices y despues los junto first_c=data_pa.iloc[index1_comb].reset_index(drop=True) second_c=data_pa.iloc[index2_comb].reset_index(drop=True) final_data_pandas = pd.concat((first_c,second_c),axis=1) display(final_data_pandas ) 2014-05-13 13:09 GMT-05:00 Kiko : > > > > El 13 de mayo de 2014, 20:05, AGTUGO escribió: > > >> Muchas gracias, no es para clase. Es un programa para calcular la vida >> minima de un componente mecánico, entonces debo buscar la vida minima >> buscando todas las posibles combinaciones y despues hacer calculos. Esta >> rutina la hago varias veces con algunas variaciones, y con el dataframe es >> mas facil visualizar. >> >> Cuando paso a un array pierdo un poco de informacion de los headers, y la >> tengo que extraer y volver a meter. En mi opinion estar cambiando de tipos >> de datos aumenta la probabilidad de errores y la lectura posterior. Es más >> o menos el ya discutido problema de evitar el tipo matrix en numpy y >> solamente usar arrays aunque sea no tan transparente las operaciones >> matriciales. >> >> >> > Pues si te ha funcionado, perfecto, y si no es lo que buscabas seguimos > iterando. > > Saludos. > > >> 2014-05-13 12:16 GMT-05:00 Kiko : >> >> >>> >>> >>> El 13 de mayo de 2014, 18:31, AGTUGO escribió: >>> >>> Entiendo el punto pero tengo que pasar por un array intermedio. La idea >>>> es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar el >>>> dataframe con las combinaciones, el método actual sería: >>>> >>>> 1.- Importar csv en dataframe >>>> 2.- Crear un array del dataframe >>>> 3.- Crear los indices de las combinaciones >>>> 4.- Usar la notacion de indices para crear el array >>>> 5.- Crear el dataset a partir del array >>>> >>>> Método buscado: >>>> >>>> 1.- Importar csv en dataframe >>>> 2.- Crear indices de las combinaciones >>>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>>> partir del dataframe viejo >>>> >>>> >>>> import pandas as pd >>> from itertools import combinations >>> >>> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >>> #Lo dejo así por simplificar >>> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], columns >>> = range(5)) >>> >>> #creamos el dataframe de destino con 10 columnas >>> df1 = pd.DataFrame(columns = range(10)) >>> >>> # De esta forma estás usando los índices del dataframe df0 para hacer >>> las combinaciones >>> for i,j in enumerate(combinations(df0.index,2)): >>> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >>> >>> El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo >>> complicado e innecesario lo que quieres hacer (a no ser que sea un >>> ejercicio para clase y entonces podría entender lo rebuscado del asunto). >>> >>> Saludos. >>> >>> >>>> >>>> 2014-05-13 2:12 GMT-05:00 Kiko : >>>> >>>> >>>>> >>>>> >>>>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>>>> >>>>> Hola, >>>>>> >>>>>> He estado tratando de hacer implementacion solamente con panda de lo >>>>>> siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los >>>>>> mas entradillos con pandas espero que lo siguiente sea trivial. >>>>>> >>>>>> La entrada son datos tabulados de dos dimensiones o una matrix, la >>>>>> idea es formar todas las combinaciones, sin repetir y sin sustitución, de >>>>>> los renglones. La pareja de renglones se ponen en un solo renglon. >>>>>> >>>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>>> siguiente. >>>>>> >>>>>> #### combinaciones.py >>>>>> >>>>>> >>>>>> import numpy as np >>>>>> import itertools >>>>>> rows = 10 >>>>>> columns =5 >>>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>>> print('\n===Data===\n') >>>>>> print(data) >>>>>> to_mix = np.arange(rows) >>>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>>> combination = np.array(combination) >>>>>> print('\n===Combination===\n') >>>>>> print(combination) >>>>>> >>>>>> >>>>>> final_data = >>>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>>> print('\n===Final Data===\n') >>>>>> print(final_data) >>>>>> >>>>>> >>>>>> >>>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>>> final que has obtenido? >>>>> >>>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>>> instalado, repito): >>>>> >>>>> from itertools import combinations >>>>> >>>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>>> final = [] >>>>> for i in combinations(range(10),2): >>>>> final.append(lista[i[0]]+lista[i[1]]) >>>>> df = pd.DataFrame(final, columns = range(10)) >>>>> >>>>> >>>>>> >>>>>> >>>>>> Resultado: >>>>>> >>>>>> ===Data=== >>>>>> >>>>>> [[ 0 1 2 3 4] >>>>>> [ 5 6 7 8 9] >>>>>> [10 11 12 13 14] >>>>>> ..., >>>>>> [35 36 37 38 39] >>>>>> [40 41 42 43 44] >>>>>> [45 46 47 48 49]] >>>>>> >>>>>> ===Combination=== >>>>>> >>>>>> [[0 1] >>>>>> [0 2] >>>>>> [0 3] >>>>>> ..., >>>>>> [7 8] >>>>>> [7 9] >>>>>> [8 9]] >>>>>> >>>>>> ===Final Data=== >>>>>> >>>>>> [[ 0 1 2 ..., 7 8 9] >>>>>> [ 0 1 2 ..., 12 13 14] >>>>>> [ 0 1 2 ..., 17 18 19] >>>>>> ..., >>>>>> [35 36 37 ..., 42 43 44] >>>>>> [35 36 37 ..., 47 48 49] >>>>>> [40 41 42 ..., 47 48 49]] >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Arturo Muñoz Tolosa >>>>>> >>>>>> _______________________________________________ >>>>>> Python-es mailing list >>>>>> Python-es en python.org >>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> >>>> -- >>>> Arturo Muñoz Tolosa >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> >> -- >> Arturo Muñoz Tolosa >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Tue May 13 21:49:47 2014 From: kikocorreoso en gmail.com (Kiko) Date: Tue, 13 May 2014 21:49:47 +0200 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: El 13 de mayo de 2014, 20:52, AGTUGO escribió: > Pues aqui tengo el siguiente codigo donde no necesito crear un array > intermedio. > > Creo que la mejor opcion es simplemente usar ix para tener indexing tipo > numpy, > ¿Que opinas Kiko? > > import numpy as np > import itertools > ## tamaño de los renglones y columnas de los datos tabulados > > rows = 10 > columns =5 > ## informacion proporcionada en forma tabulada aqui estoy simulando el csv > data = np.arange(rows*columns).reshape(rows,columns) > data_pa = pd.DataFrame(data, columns = ('A','B','C','D','E')) > display(data_pa) > > ## lo siguiente crea los indices de las combinaciones > > to_mix = np.arange(rows) > mixed = list(itertools.product(to_mix,to_mix)) > combination = [x for x in mixed if (x[0]< x[1])] > combination = np.array(combination) > > > # separo los indices en dos variables > index1_comb = combination[:,0] > index2_comb = combination[:,1] > > #creo dos dataframes con los indices y despues los junto > > first_c=data_pa.iloc[index1_comb].reset_index(drop=True) > second_c=data_pa.iloc[index2_comb].reset_index(drop=True) > final_data_pandas = pd.concat((first_c,second_c),axis=1) > display(final_data_pandas ) > > En las versiones que te he dejado no uso en ningún momento numpy. ¿No te valen como opción? > > > > > 2014-05-13 13:09 GMT-05:00 Kiko : > > >> >> >> El 13 de mayo de 2014, 20:05, AGTUGO escribió: >> >> >>> Muchas gracias, no es para clase. Es un programa para calcular la vida >>> minima de un componente mecánico, entonces debo buscar la vida minima >>> buscando todas las posibles combinaciones y despues hacer calculos. Esta >>> rutina la hago varias veces con algunas variaciones, y con el dataframe es >>> mas facil visualizar. >>> >>> Cuando paso a un array pierdo un poco de informacion de los headers, y >>> la tengo que extraer y volver a meter. En mi opinion estar cambiando de >>> tipos de datos aumenta la probabilidad de errores y la lectura posterior. >>> Es más o menos el ya discutido problema de evitar el tipo matrix en numpy y >>> solamente usar arrays aunque sea no tan transparente las operaciones >>> matriciales. >>> >>> >>> >> Pues si te ha funcionado, perfecto, y si no es lo que buscabas seguimos >> iterando. >> >> Saludos. >> >> >>> 2014-05-13 12:16 GMT-05:00 Kiko : >>> >>> >>>> >>>> >>>> El 13 de mayo de 2014, 18:31, AGTUGO escribió: >>>> >>>> Entiendo el punto pero tengo que pasar por un array intermedio. La >>>>> idea es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar >>>>> el dataframe con las combinaciones, el método actual sería: >>>>> >>>>> 1.- Importar csv en dataframe >>>>> 2.- Crear un array del dataframe >>>>> 3.- Crear los indices de las combinaciones >>>>> 4.- Usar la notacion de indices para crear el array >>>>> 5.- Crear el dataset a partir del array >>>>> >>>>> Método buscado: >>>>> >>>>> 1.- Importar csv en dataframe >>>>> 2.- Crear indices de las combinaciones >>>>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>>>> partir del dataframe viejo >>>>> >>>>> >>>>> import pandas as pd >>>> from itertools import combinations >>>> >>>> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >>>> #Lo dejo así por simplificar >>>> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], columns >>>> = range(5)) >>>> >>>> #creamos el dataframe de destino con 10 columnas >>>> df1 = pd.DataFrame(columns = range(10)) >>>> >>>> # De esta forma estás usando los índices del dataframe df0 para hacer >>>> las combinaciones >>>> for i,j in enumerate(combinations(df0.index,2)): >>>> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >>>> >>>> El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo >>>> complicado e innecesario lo que quieres hacer (a no ser que sea un >>>> ejercicio para clase y entonces podría entender lo rebuscado del asunto). >>>> >>>> Saludos. >>>> >>>> >>>>> >>>>> 2014-05-13 2:12 GMT-05:00 Kiko : >>>>> >>>>> >>>>>> >>>>>> >>>>>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>>>>> >>>>>> Hola, >>>>>>> >>>>>>> He estado tratando de hacer implementacion solamente con panda de lo >>>>>>> siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para los >>>>>>> mas entradillos con pandas espero que lo siguiente sea trivial. >>>>>>> >>>>>>> La entrada son datos tabulados de dos dimensiones o una matrix, la >>>>>>> idea es formar todas las combinaciones, sin repetir y sin sustitución, de >>>>>>> los renglones. La pareja de renglones se ponen en un solo renglon. >>>>>>> >>>>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>>>> siguiente. >>>>>>> >>>>>>> #### combinaciones.py >>>>>>> >>>>>>> >>>>>>> import numpy as np >>>>>>> import itertools >>>>>>> rows = 10 >>>>>>> columns =5 >>>>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>>>> print('\n===Data===\n') >>>>>>> print(data) >>>>>>> to_mix = np.arange(rows) >>>>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>>>> combination = np.array(combination) >>>>>>> print('\n===Combination===\n') >>>>>>> print(combination) >>>>>>> >>>>>>> >>>>>>> final_data = >>>>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>>>> print('\n===Final Data===\n') >>>>>>> print(final_data) >>>>>>> >>>>>>> >>>>>>> >>>>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>>>> final que has obtenido? >>>>>> >>>>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>>>> instalado, repito): >>>>>> >>>>>> from itertools import combinations >>>>>> >>>>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>>>> final = [] >>>>>> for i in combinations(range(10),2): >>>>>> final.append(lista[i[0]]+lista[i[1]]) >>>>>> df = pd.DataFrame(final, columns = range(10)) >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> Resultado: >>>>>>> >>>>>>> ===Data=== >>>>>>> >>>>>>> [[ 0 1 2 3 4] >>>>>>> [ 5 6 7 8 9] >>>>>>> [10 11 12 13 14] >>>>>>> ..., >>>>>>> [35 36 37 38 39] >>>>>>> [40 41 42 43 44] >>>>>>> [45 46 47 48 49]] >>>>>>> >>>>>>> ===Combination=== >>>>>>> >>>>>>> [[0 1] >>>>>>> [0 2] >>>>>>> [0 3] >>>>>>> ..., >>>>>>> [7 8] >>>>>>> [7 9] >>>>>>> [8 9]] >>>>>>> >>>>>>> ===Final Data=== >>>>>>> >>>>>>> [[ 0 1 2 ..., 7 8 9] >>>>>>> [ 0 1 2 ..., 12 13 14] >>>>>>> [ 0 1 2 ..., 17 18 19] >>>>>>> ..., >>>>>>> [35 36 37 ..., 42 43 44] >>>>>>> [35 36 37 ..., 47 48 49] >>>>>>> [40 41 42 ..., 47 48 49]] >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>>>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Arturo Muñoz Tolosa >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Python-es mailing list >>>>>>> Python-es en python.org >>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Python-es mailing list >>>>>> Python-es en python.org >>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Arturo Muñoz Tolosa >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Wed May 14 01:50:26 2014 From: agtugo en gmail.com (AGTUGO) Date: Tue, 13 May 2014 18:50:26 -0500 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: Sí lo unico que me causa un poco de ruido es usar el ciclo for para crear los renglones, siempre trato de evitarlos y usar streaming, indexing, slicing. Pero pues ya cambie mi forma de las combinaciones por tu método. 2014-05-13 14:49 GMT-05:00 Kiko : > > > > El 13 de mayo de 2014, 20:52, AGTUGO escribió: > > Pues aqui tengo el siguiente codigo donde no necesito crear un array >> intermedio. >> >> Creo que la mejor opcion es simplemente usar ix para tener indexing tipo >> numpy, >> ¿Que opinas Kiko? >> >> import numpy as np >> import itertools >> ## tamaño de los renglones y columnas de los datos tabulados >> >> rows = 10 >> columns =5 >> ## informacion proporcionada en forma tabulada aqui estoy simulando el csv >> data = np.arange(rows*columns).reshape(rows,columns) >> data_pa = pd.DataFrame(data, columns = ('A','B','C','D','E')) >> display(data_pa) >> >> ## lo siguiente crea los indices de las combinaciones >> >> to_mix = np.arange(rows) >> mixed = list(itertools.product(to_mix,to_mix)) >> combination = [x for x in mixed if (x[0]< x[1])] >> combination = np.array(combination) >> >> >> # separo los indices en dos variables >> index1_comb = combination[:,0] >> index2_comb = combination[:,1] >> >> #creo dos dataframes con los indices y despues los junto >> >> first_c=data_pa.iloc[index1_comb].reset_index(drop=True) >> second_c=data_pa.iloc[index2_comb].reset_index(drop=True) >> final_data_pandas = pd.concat((first_c,second_c),axis=1) >> display(final_data_pandas ) >> >> > En las versiones que te he dejado no uso en ningún momento numpy. ¿No te > valen como opción? > >> >> >> >> >> 2014-05-13 13:09 GMT-05:00 Kiko : >> >> >>> >>> >>> El 13 de mayo de 2014, 20:05, AGTUGO escribió: >>> >>> >>>> Muchas gracias, no es para clase. Es un programa para calcular la vida >>>> minima de un componente mecánico, entonces debo buscar la vida minima >>>> buscando todas las posibles combinaciones y despues hacer calculos. Esta >>>> rutina la hago varias veces con algunas variaciones, y con el dataframe es >>>> mas facil visualizar. >>>> >>>> Cuando paso a un array pierdo un poco de informacion de los headers, y >>>> la tengo que extraer y volver a meter. En mi opinion estar cambiando de >>>> tipos de datos aumenta la probabilidad de errores y la lectura posterior. >>>> Es más o menos el ya discutido problema de evitar el tipo matrix en numpy y >>>> solamente usar arrays aunque sea no tan transparente las operaciones >>>> matriciales. >>>> >>>> >>>> >>> Pues si te ha funcionado, perfecto, y si no es lo que buscabas seguimos >>> iterando. >>> >>> Saludos. >>> >>> >>>> 2014-05-13 12:16 GMT-05:00 Kiko : >>>> >>>> >>>>> >>>>> >>>>> El 13 de mayo de 2014, 18:31, AGTUGO escribió: >>>>> >>>>> Entiendo el punto pero tengo que pasar por un array intermedio. La >>>>>> idea es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar >>>>>> el dataframe con las combinaciones, el método actual sería: >>>>>> >>>>>> 1.- Importar csv en dataframe >>>>>> 2.- Crear un array del dataframe >>>>>> 3.- Crear los indices de las combinaciones >>>>>> 4.- Usar la notacion de indices para crear el array >>>>>> 5.- Crear el dataset a partir del array >>>>>> >>>>>> Método buscado: >>>>>> >>>>>> 1.- Importar csv en dataframe >>>>>> 2.- Crear indices de las combinaciones >>>>>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>>>>> partir del dataframe viejo >>>>>> >>>>>> >>>>>> import pandas as pd >>>>> from itertools import combinations >>>>> >>>>> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >>>>> #Lo dejo así por simplificar >>>>> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], >>>>> columns = range(5)) >>>>> >>>>> #creamos el dataframe de destino con 10 columnas >>>>> df1 = pd.DataFrame(columns = range(10)) >>>>> >>>>> # De esta forma estás usando los índices del dataframe df0 para hacer >>>>> las combinaciones >>>>> for i,j in enumerate(combinations(df0.index,2)): >>>>> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >>>>> >>>>> El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo >>>>> complicado e innecesario lo que quieres hacer (a no ser que sea un >>>>> ejercicio para clase y entonces podría entender lo rebuscado del asunto). >>>>> >>>>> Saludos. >>>>> >>>>> >>>>>> >>>>>> 2014-05-13 2:12 GMT-05:00 Kiko : >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>>>>>> >>>>>>> Hola, >>>>>>>> >>>>>>>> He estado tratando de hacer implementacion solamente con panda de >>>>>>>> lo siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para >>>>>>>> los mas entradillos con pandas espero que lo siguiente sea trivial. >>>>>>>> >>>>>>>> La entrada son datos tabulados de dos dimensiones o una matrix, la >>>>>>>> idea es formar todas las combinaciones, sin repetir y sin sustitución, de >>>>>>>> los renglones. La pareja de renglones se ponen en un solo renglon. >>>>>>>> >>>>>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>>>>> siguiente. >>>>>>>> >>>>>>>> #### combinaciones.py >>>>>>>> >>>>>>>> >>>>>>>> import numpy as np >>>>>>>> import itertools >>>>>>>> rows = 10 >>>>>>>> columns =5 >>>>>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>>>>> print('\n===Data===\n') >>>>>>>> print(data) >>>>>>>> to_mix = np.arange(rows) >>>>>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>>>>> combination = np.array(combination) >>>>>>>> print('\n===Combination===\n') >>>>>>>> print(combination) >>>>>>>> >>>>>>>> >>>>>>>> final_data = >>>>>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>>>>> print('\n===Final Data===\n') >>>>>>>> print(final_data) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>>>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>>>>> final que has obtenido? >>>>>>> >>>>>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>>>>> instalado, repito): >>>>>>> >>>>>>> from itertools import combinations >>>>>>> >>>>>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>>>>> final = [] >>>>>>> for i in combinations(range(10),2): >>>>>>> final.append(lista[i[0]]+lista[i[1]]) >>>>>>> df = pd.DataFrame(final, columns = range(10)) >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Resultado: >>>>>>>> >>>>>>>> ===Data=== >>>>>>>> >>>>>>>> [[ 0 1 2 3 4] >>>>>>>> [ 5 6 7 8 9] >>>>>>>> [10 11 12 13 14] >>>>>>>> ..., >>>>>>>> [35 36 37 38 39] >>>>>>>> [40 41 42 43 44] >>>>>>>> [45 46 47 48 49]] >>>>>>>> >>>>>>>> ===Combination=== >>>>>>>> >>>>>>>> [[0 1] >>>>>>>> [0 2] >>>>>>>> [0 3] >>>>>>>> ..., >>>>>>>> [7 8] >>>>>>>> [7 9] >>>>>>>> [8 9]] >>>>>>>> >>>>>>>> ===Final Data=== >>>>>>>> >>>>>>>> [[ 0 1 2 ..., 7 8 9] >>>>>>>> [ 0 1 2 ..., 12 13 14] >>>>>>>> [ 0 1 2 ..., 17 18 19] >>>>>>>> ..., >>>>>>>> [35 36 37 ..., 42 43 44] >>>>>>>> [35 36 37 ..., 47 48 49] >>>>>>>> [40 41 42 ..., 47 48 49]] >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>>>>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Arturo Muñoz Tolosa >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Python-es mailing list >>>>>>>> Python-es en python.org >>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Python-es mailing list >>>>>>> Python-es en python.org >>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Arturo Muñoz Tolosa >>>>>> >>>>>> _______________________________________________ >>>>>> Python-es mailing list >>>>>> Python-es en python.org >>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> >>>> -- >>>> Arturo Muñoz Tolosa >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> >> -- >> Arturo Muñoz Tolosa >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Wed May 14 08:36:02 2014 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 14 May 2014 08:36:02 +0200 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: El 14 de mayo de 2014, 1:50, AGTUGO escribió: > Sí lo unico que me causa un poco de ruido es usar el ciclo for para crear > los renglones, siempre trato de evitarlos y usar streaming, indexing, > slicing. Pero pues ya cambie mi forma de las combinaciones por tu método. > > Sigo considerando que deberías usar numpy arrays y una vez tengas los datos crear el DataFrame final. Modificar un DataFrame puede ser costoso, computacionalmente hablando, sobretodo insertar cosas línea a línea (aunque usando el método 'loc' remedie en parte eso). Saludos. > > 2014-05-13 14:49 GMT-05:00 Kiko : > > >> >> >> El 13 de mayo de 2014, 20:52, AGTUGO escribió: >> >> Pues aqui tengo el siguiente codigo donde no necesito crear un array >>> intermedio. >>> >>> Creo que la mejor opcion es simplemente usar ix para tener indexing tipo >>> numpy, >>> ¿Que opinas Kiko? >>> >>> import numpy as np >>> import itertools >>> ## tamaño de los renglones y columnas de los datos tabulados >>> >>> rows = 10 >>> columns =5 >>> ## informacion proporcionada en forma tabulada aqui estoy simulando el >>> csv >>> data = np.arange(rows*columns).reshape(rows,columns) >>> data_pa = pd.DataFrame(data, columns = ('A','B','C','D','E')) >>> display(data_pa) >>> >>> ## lo siguiente crea los indices de las combinaciones >>> >>> to_mix = np.arange(rows) >>> mixed = list(itertools.product(to_mix,to_mix)) >>> combination = [x for x in mixed if (x[0]< x[1])] >>> combination = np.array(combination) >>> >>> >>> # separo los indices en dos variables >>> index1_comb = combination[:,0] >>> index2_comb = combination[:,1] >>> >>> #creo dos dataframes con los indices y despues los junto >>> >>> first_c=data_pa.iloc[index1_comb].reset_index(drop=True) >>> second_c=data_pa.iloc[index2_comb].reset_index(drop=True) >>> final_data_pandas = pd.concat((first_c,second_c),axis=1) >>> display(final_data_pandas ) >>> >>> >> En las versiones que te he dejado no uso en ningún momento numpy. ¿No te >> valen como opción? >> >>> >>> >>> >>> >>> 2014-05-13 13:09 GMT-05:00 Kiko : >>> >>> >>>> >>>> >>>> El 13 de mayo de 2014, 20:05, AGTUGO escribió: >>>> >>>> >>>>> Muchas gracias, no es para clase. Es un programa para calcular la vida >>>>> minima de un componente mecánico, entonces debo buscar la vida minima >>>>> buscando todas las posibles combinaciones y despues hacer calculos. Esta >>>>> rutina la hago varias veces con algunas variaciones, y con el dataframe es >>>>> mas facil visualizar. >>>>> >>>>> Cuando paso a un array pierdo un poco de informacion de los headers, y >>>>> la tengo que extraer y volver a meter. En mi opinion estar cambiando de >>>>> tipos de datos aumenta la probabilidad de errores y la lectura posterior. >>>>> Es más o menos el ya discutido problema de evitar el tipo matrix en numpy y >>>>> solamente usar arrays aunque sea no tan transparente las operaciones >>>>> matriciales. >>>>> >>>>> >>>>> >>>> Pues si te ha funcionado, perfecto, y si no es lo que buscabas seguimos >>>> iterando. >>>> >>>> Saludos. >>>> >>>> >>>>> 2014-05-13 12:16 GMT-05:00 Kiko : >>>>> >>>>> >>>>>> >>>>>> >>>>>> El 13 de mayo de 2014, 18:31, AGTUGO escribió: >>>>>> >>>>>> Entiendo el punto pero tengo que pasar por un array intermedio. La >>>>>>> idea es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar >>>>>>> el dataframe con las combinaciones, el método actual sería: >>>>>>> >>>>>>> 1.- Importar csv en dataframe >>>>>>> 2.- Crear un array del dataframe >>>>>>> 3.- Crear los indices de las combinaciones >>>>>>> 4.- Usar la notacion de indices para crear el array >>>>>>> 5.- Crear el dataset a partir del array >>>>>>> >>>>>>> Método buscado: >>>>>>> >>>>>>> 1.- Importar csv en dataframe >>>>>>> 2.- Crear indices de las combinaciones >>>>>>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>>>>>> partir del dataframe viejo >>>>>>> >>>>>>> >>>>>>> import pandas as pd >>>>>> from itertools import combinations >>>>>> >>>>>> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >>>>>> #Lo dejo así por simplificar >>>>>> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], >>>>>> columns = range(5)) >>>>>> >>>>>> #creamos el dataframe de destino con 10 columnas >>>>>> df1 = pd.DataFrame(columns = range(10)) >>>>>> >>>>>> # De esta forma estás usando los índices del dataframe df0 para hacer >>>>>> las combinaciones >>>>>> for i,j in enumerate(combinations(df0.index,2)): >>>>>> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >>>>>> >>>>>> El dataframe df1 tendría todas las combinaciones. Me sigue pareciendo >>>>>> complicado e innecesario lo que quieres hacer (a no ser que sea un >>>>>> ejercicio para clase y entonces podría entender lo rebuscado del asunto). >>>>>> >>>>>> Saludos. >>>>>> >>>>>> >>>>>>> >>>>>>> 2014-05-13 2:12 GMT-05:00 Kiko : >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>>>>>>> >>>>>>>> Hola, >>>>>>>>> >>>>>>>>> He estado tratando de hacer implementacion solamente con panda de >>>>>>>>> lo siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para >>>>>>>>> los mas entradillos con pandas espero que lo siguiente sea trivial. >>>>>>>>> >>>>>>>>> La entrada son datos tabulados de dos dimensiones o una matrix, la >>>>>>>>> idea es formar todas las combinaciones, sin repetir y sin sustitución, de >>>>>>>>> los renglones. La pareja de renglones se ponen en un solo renglon. >>>>>>>>> >>>>>>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>>>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>>>>>> siguiente. >>>>>>>>> >>>>>>>>> #### combinaciones.py >>>>>>>>> >>>>>>>>> >>>>>>>>> import numpy as np >>>>>>>>> import itertools >>>>>>>>> rows = 10 >>>>>>>>> columns =5 >>>>>>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>>>>>> print('\n===Data===\n') >>>>>>>>> print(data) >>>>>>>>> to_mix = np.arange(rows) >>>>>>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>>>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>>>>>> combination = np.array(combination) >>>>>>>>> print('\n===Combination===\n') >>>>>>>>> print(combination) >>>>>>>>> >>>>>>>>> >>>>>>>>> final_data = >>>>>>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>>>>>> print('\n===Final Data===\n') >>>>>>>>> print(final_data) >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>>>>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>>>>>> final que has obtenido? >>>>>>>> >>>>>>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>>>>>> instalado, repito): >>>>>>>> >>>>>>>> from itertools import combinations >>>>>>>> >>>>>>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>>>>>> final = [] >>>>>>>> for i in combinations(range(10),2): >>>>>>>> final.append(lista[i[0]]+lista[i[1]]) >>>>>>>> df = pd.DataFrame(final, columns = range(10)) >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Resultado: >>>>>>>>> >>>>>>>>> ===Data=== >>>>>>>>> >>>>>>>>> [[ 0 1 2 3 4] >>>>>>>>> [ 5 6 7 8 9] >>>>>>>>> [10 11 12 13 14] >>>>>>>>> ..., >>>>>>>>> [35 36 37 38 39] >>>>>>>>> [40 41 42 43 44] >>>>>>>>> [45 46 47 48 49]] >>>>>>>>> >>>>>>>>> ===Combination=== >>>>>>>>> >>>>>>>>> [[0 1] >>>>>>>>> [0 2] >>>>>>>>> [0 3] >>>>>>>>> ..., >>>>>>>>> [7 8] >>>>>>>>> [7 9] >>>>>>>>> [8 9]] >>>>>>>>> >>>>>>>>> ===Final Data=== >>>>>>>>> >>>>>>>>> [[ 0 1 2 ..., 7 8 9] >>>>>>>>> [ 0 1 2 ..., 12 13 14] >>>>>>>>> [ 0 1 2 ..., 17 18 19] >>>>>>>>> ..., >>>>>>>>> [35 36 37 ..., 42 43 44] >>>>>>>>> [35 36 37 ..., 47 48 49] >>>>>>>>> [40 41 42 ..., 47 48 49]] >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>>>>>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Arturo Muñoz Tolosa >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Python-es mailing list >>>>>>>>> Python-es en python.org >>>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Python-es mailing list >>>>>>>> Python-es en python.org >>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Arturo Muñoz Tolosa >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Python-es mailing list >>>>>>> Python-es en python.org >>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Python-es mailing list >>>>>> Python-es en python.org >>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Arturo Muñoz Tolosa >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Wed May 14 09:16:01 2014 From: agtugo en gmail.com (AGTUGO) Date: Wed, 14 May 2014 02:16:01 -0500 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: Completamente de acuerdo, en este momento no le podre meter mucho tiempo a mejorar el performance pero lo haré en un futuro y les comunico mis resultados. Es extraño que nadie más este en la discusión. ¿Será pandas y numpy poco usado por esta comunidad? 2014-05-14 1:36 GMT-05:00 Kiko : > > > > El 14 de mayo de 2014, 1:50, AGTUGO escribió: > > Sí lo unico que me causa un poco de ruido es usar el ciclo for para crear >> los renglones, siempre trato de evitarlos y usar streaming, indexing, >> slicing. Pero pues ya cambie mi forma de las combinaciones por tu método. >> >> > Sigo considerando que deberías usar numpy arrays y una vez tengas los > datos crear el DataFrame final. Modificar un DataFrame puede ser costoso, > computacionalmente hablando, sobretodo insertar cosas línea a línea (aunque > usando el método 'loc' remedie en parte eso). > > Saludos. > > >> >> 2014-05-13 14:49 GMT-05:00 Kiko : >> >> >>> >>> >>> El 13 de mayo de 2014, 20:52, AGTUGO escribió: >>> >>> Pues aqui tengo el siguiente codigo donde no necesito crear un array >>>> intermedio. >>>> >>>> Creo que la mejor opcion es simplemente usar ix para tener indexing >>>> tipo numpy, >>>> ¿Que opinas Kiko? >>>> >>>> import numpy as np >>>> import itertools >>>> ## tamaño de los renglones y columnas de los datos tabulados >>>> >>>> rows = 10 >>>> columns =5 >>>> ## informacion proporcionada en forma tabulada aqui estoy simulando el >>>> csv >>>> data = np.arange(rows*columns).reshape(rows,columns) >>>> data_pa = pd.DataFrame(data, columns = ('A','B','C','D','E')) >>>> display(data_pa) >>>> >>>> ## lo siguiente crea los indices de las combinaciones >>>> >>>> to_mix = np.arange(rows) >>>> mixed = list(itertools.product(to_mix,to_mix)) >>>> combination = [x for x in mixed if (x[0]< x[1])] >>>> combination = np.array(combination) >>>> >>>> >>>> # separo los indices en dos variables >>>> index1_comb = combination[:,0] >>>> index2_comb = combination[:,1] >>>> >>>> #creo dos dataframes con los indices y despues los junto >>>> >>>> first_c=data_pa.iloc[index1_comb].reset_index(drop=True) >>>> second_c=data_pa.iloc[index2_comb].reset_index(drop=True) >>>> final_data_pandas = pd.concat((first_c,second_c),axis=1) >>>> display(final_data_pandas ) >>>> >>>> >>> En las versiones que te he dejado no uso en ningún momento numpy. ¿No te >>> valen como opción? >>> >>>> >>>> >>>> >>>> >>>> 2014-05-13 13:09 GMT-05:00 Kiko : >>>> >>>> >>>>> >>>>> >>>>> El 13 de mayo de 2014, 20:05, AGTUGO escribió: >>>>> >>>>> >>>>>> Muchas gracias, no es para clase. Es un programa para calcular la >>>>>> vida minima de un componente mecánico, entonces debo buscar la vida minima >>>>>> buscando todas las posibles combinaciones y despues hacer calculos. Esta >>>>>> rutina la hago varias veces con algunas variaciones, y con el dataframe es >>>>>> mas facil visualizar. >>>>>> >>>>>> Cuando paso a un array pierdo un poco de informacion de los headers, >>>>>> y la tengo que extraer y volver a meter. En mi opinion estar cambiando de >>>>>> tipos de datos aumenta la probabilidad de errores y la lectura posterior. >>>>>> Es más o menos el ya discutido problema de evitar el tipo matrix en numpy y >>>>>> solamente usar arrays aunque sea no tan transparente las operaciones >>>>>> matriciales. >>>>>> >>>>>> >>>>>> >>>>> Pues si te ha funcionado, perfecto, y si no es lo que buscabas >>>>> seguimos iterando. >>>>> >>>>> Saludos. >>>>> >>>>> >>>>>> 2014-05-13 12:16 GMT-05:00 Kiko : >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> El 13 de mayo de 2014, 18:31, AGTUGO escribió: >>>>>>> >>>>>>> Entiendo el punto pero tengo que pasar por un array intermedio. La >>>>>>>> idea es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar >>>>>>>> el dataframe con las combinaciones, el método actual sería: >>>>>>>> >>>>>>>> 1.- Importar csv en dataframe >>>>>>>> 2.- Crear un array del dataframe >>>>>>>> 3.- Crear los indices de las combinaciones >>>>>>>> 4.- Usar la notacion de indices para crear el array >>>>>>>> 5.- Crear el dataset a partir del array >>>>>>>> >>>>>>>> Método buscado: >>>>>>>> >>>>>>>> 1.- Importar csv en dataframe >>>>>>>> 2.- Crear indices de las combinaciones >>>>>>>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>>>>>>> partir del dataframe viejo >>>>>>>> >>>>>>>> >>>>>>>> import pandas as pd >>>>>>> from itertools import combinations >>>>>>> >>>>>>> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >>>>>>> #Lo dejo así por simplificar >>>>>>> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], >>>>>>> columns = range(5)) >>>>>>> >>>>>>> #creamos el dataframe de destino con 10 columnas >>>>>>> df1 = pd.DataFrame(columns = range(10)) >>>>>>> >>>>>>> # De esta forma estás usando los índices del dataframe df0 para >>>>>>> hacer las combinaciones >>>>>>> for i,j in enumerate(combinations(df0.index,2)): >>>>>>> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >>>>>>> >>>>>>> El dataframe df1 tendría todas las combinaciones. Me sigue >>>>>>> pareciendo complicado e innecesario lo que quieres hacer (a no ser que sea >>>>>>> un ejercicio para clase y entonces podría entender lo rebuscado del asunto). >>>>>>> >>>>>>> Saludos. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> 2014-05-13 2:12 GMT-05:00 Kiko : >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>>>>>>>> >>>>>>>>> Hola, >>>>>>>>>> >>>>>>>>>> He estado tratando de hacer implementacion solamente con panda de >>>>>>>>>> lo siguiente que ya tengo con numpy, pero no me ha salido nada bien. Para >>>>>>>>>> los mas entradillos con pandas espero que lo siguiente sea trivial. >>>>>>>>>> >>>>>>>>>> La entrada son datos tabulados de dos dimensiones o una matrix, >>>>>>>>>> la idea es formar todas las combinaciones, sin repetir y sin sustitución, >>>>>>>>>> de los renglones. La pareja de renglones se ponen en un solo renglon. >>>>>>>>>> >>>>>>>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>>>>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>>>>>>> siguiente. >>>>>>>>>> >>>>>>>>>> #### combinaciones.py >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> import numpy as np >>>>>>>>>> import itertools >>>>>>>>>> rows = 10 >>>>>>>>>> columns =5 >>>>>>>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>>>>>>> print('\n===Data===\n') >>>>>>>>>> print(data) >>>>>>>>>> to_mix = np.arange(rows) >>>>>>>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>>>>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>>>>>>> combination = np.array(combination) >>>>>>>>>> print('\n===Combination===\n') >>>>>>>>>> print(combination) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> final_data = >>>>>>>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>>>>>>> print('\n===Final Data===\n') >>>>>>>>>> print(final_data) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>>>>>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>>>>>>> final que has obtenido? >>>>>>>>> >>>>>>>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>>>>>>> instalado, repito): >>>>>>>>> >>>>>>>>> from itertools import combinations >>>>>>>>> >>>>>>>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>>>>>>> final = [] >>>>>>>>> for i in combinations(range(10),2): >>>>>>>>> final.append(lista[i[0]]+lista[i[1]]) >>>>>>>>> df = pd.DataFrame(final, columns = range(10)) >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Resultado: >>>>>>>>>> >>>>>>>>>> ===Data=== >>>>>>>>>> >>>>>>>>>> [[ 0 1 2 3 4] >>>>>>>>>> [ 5 6 7 8 9] >>>>>>>>>> [10 11 12 13 14] >>>>>>>>>> ..., >>>>>>>>>> [35 36 37 38 39] >>>>>>>>>> [40 41 42 43 44] >>>>>>>>>> [45 46 47 48 49]] >>>>>>>>>> >>>>>>>>>> ===Combination=== >>>>>>>>>> >>>>>>>>>> [[0 1] >>>>>>>>>> [0 2] >>>>>>>>>> [0 3] >>>>>>>>>> ..., >>>>>>>>>> [7 8] >>>>>>>>>> [7 9] >>>>>>>>>> [8 9]] >>>>>>>>>> >>>>>>>>>> ===Final Data=== >>>>>>>>>> >>>>>>>>>> [[ 0 1 2 ..., 7 8 9] >>>>>>>>>> [ 0 1 2 ..., 12 13 14] >>>>>>>>>> [ 0 1 2 ..., 17 18 19] >>>>>>>>>> ..., >>>>>>>>>> [35 36 37 ..., 42 43 44] >>>>>>>>>> [35 36 37 ..., 47 48 49] >>>>>>>>>> [40 41 42 ..., 47 48 49]] >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando los >>>>>>>>>> indices en panda. Espero que me puedan dar una orientación saludos. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Arturo Muñoz Tolosa >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Python-es mailing list >>>>>>>>>> Python-es en python.org >>>>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Python-es mailing list >>>>>>>>> Python-es en python.org >>>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Arturo Muñoz Tolosa >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Python-es mailing list >>>>>>>> Python-es en python.org >>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Python-es mailing list >>>>>>> Python-es en python.org >>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Arturo Muñoz Tolosa >>>>>> >>>>>> _______________________________________________ >>>>>> Python-es mailing list >>>>>> Python-es en python.org >>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> >>>> -- >>>> Arturo Muñoz Tolosa >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> >> -- >> Arturo Muñoz Tolosa >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From monobot.soft en gmail.com Wed May 14 10:08:17 2014 From: monobot.soft en gmail.com (monoBOT) Date: Wed, 14 May 2014 09:08:17 +0100 Subject: [Python-es] Combinaciones no repetidas de renglones con numpy/pandas In-Reply-To: References: Message-ID: Kiko es un gurú en numpy no necesitas a nadie mas XD El 14 de mayo de 2014, 8:16, AGTUGO escribió: > Completamente de acuerdo, en este momento no le podre meter mucho tiempo a > mejorar el performance pero lo haré en un futuro y les comunico mis > resultados. Es extraño que nadie más este en la discusión. ¿Será pandas y > numpy poco usado por esta comunidad? > > > 2014-05-14 1:36 GMT-05:00 Kiko : > > >> >> >> El 14 de mayo de 2014, 1:50, AGTUGO escribió: >> >> Sí lo unico que me causa un poco de ruido es usar el ciclo for para crear >>> los renglones, siempre trato de evitarlos y usar streaming, indexing, >>> slicing. Pero pues ya cambie mi forma de las combinaciones por tu método. >>> >>> >> Sigo considerando que deberías usar numpy arrays y una vez tengas los >> datos crear el DataFrame final. Modificar un DataFrame puede ser costoso, >> computacionalmente hablando, sobretodo insertar cosas línea a línea (aunque >> usando el método 'loc' remedie en parte eso). >> >> Saludos. >> >> >>> >>> 2014-05-13 14:49 GMT-05:00 Kiko : >>> >>> >>>> >>>> >>>> El 13 de mayo de 2014, 20:52, AGTUGO escribió: >>>> >>>> Pues aqui tengo el siguiente codigo donde no necesito crear un array >>>>> intermedio. >>>>> >>>>> Creo que la mejor opcion es simplemente usar ix para tener indexing >>>>> tipo numpy, >>>>> ¿Que opinas Kiko? >>>>> >>>>> import numpy as np >>>>> import itertools >>>>> ## tamaño de los renglones y columnas de los datos tabulados >>>>> >>>>> rows = 10 >>>>> columns =5 >>>>> ## informacion proporcionada en forma tabulada aqui estoy simulando el >>>>> csv >>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>> data_pa = pd.DataFrame(data, columns = ('A','B','C','D','E')) >>>>> display(data_pa) >>>>> >>>>> ## lo siguiente crea los indices de las combinaciones >>>>> >>>>> to_mix = np.arange(rows) >>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>> combination = np.array(combination) >>>>> >>>>> >>>>> # separo los indices en dos variables >>>>> index1_comb = combination[:,0] >>>>> index2_comb = combination[:,1] >>>>> >>>>> #creo dos dataframes con los indices y despues los junto >>>>> >>>>> first_c=data_pa.iloc[index1_comb].reset_index(drop=True) >>>>> second_c=data_pa.iloc[index2_comb].reset_index(drop=True) >>>>> final_data_pandas = pd.concat((first_c,second_c),axis=1) >>>>> display(final_data_pandas ) >>>>> >>>>> >>>> En las versiones que te he dejado no uso en ningún momento numpy. ¿No >>>> te valen como opción? >>>> >>>>> >>>>> >>>>> >>>>> >>>>> 2014-05-13 13:09 GMT-05:00 Kiko : >>>>> >>>>> >>>>>> >>>>>> >>>>>> El 13 de mayo de 2014, 20:05, AGTUGO escribió: >>>>>> >>>>>> >>>>>>> Muchas gracias, no es para clase. Es un programa para calcular la >>>>>>> vida minima de un componente mecánico, entonces debo buscar la vida minima >>>>>>> buscando todas las posibles combinaciones y despues hacer calculos. Esta >>>>>>> rutina la hago varias veces con algunas variaciones, y con el dataframe es >>>>>>> mas facil visualizar. >>>>>>> >>>>>>> Cuando paso a un array pierdo un poco de informacion de los headers, >>>>>>> y la tengo que extraer y volver a meter. En mi opinion estar cambiando de >>>>>>> tipos de datos aumenta la probabilidad de errores y la lectura posterior. >>>>>>> Es más o menos el ya discutido problema de evitar el tipo matrix en numpy y >>>>>>> solamente usar arrays aunque sea no tan transparente las operaciones >>>>>>> matriciales. >>>>>>> >>>>>>> >>>>>>> >>>>>> Pues si te ha funcionado, perfecto, y si no es lo que buscabas >>>>>> seguimos iterando. >>>>>> >>>>>> Saludos. >>>>>> >>>>>> >>>>>>> 2014-05-13 12:16 GMT-05:00 Kiko : >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> El 13 de mayo de 2014, 18:31, AGTUGO escribió: >>>>>>>> >>>>>>>> Entiendo el punto pero tengo que pasar por un array intermedio. La >>>>>>>>> idea es agarrar un archivo csv direcatamente a un dataframe y de ahi sacar >>>>>>>>> el dataframe con las combinaciones, el método actual sería: >>>>>>>>> >>>>>>>>> 1.- Importar csv en dataframe >>>>>>>>> 2.- Crear un array del dataframe >>>>>>>>> 3.- Crear los indices de las combinaciones >>>>>>>>> 4.- Usar la notacion de indices para crear el array >>>>>>>>> 5.- Crear el dataset a partir del array >>>>>>>>> >>>>>>>>> Método buscado: >>>>>>>>> >>>>>>>>> 1.- Importar csv en dataframe >>>>>>>>> 2.- Crear indices de las combinaciones >>>>>>>>> 3.- Usar "algo" usando los indices para crear el dataframe nuevo a >>>>>>>>> partir del dataframe viejo >>>>>>>>> >>>>>>>>> >>>>>>>>> import pandas as pd >>>>>>>> from itertools import combinations >>>>>>>> >>>>>>>> #Suponemos que este dataframe viene de leerlo con un pd.read_csv() >>>>>>>> #Lo dejo así por simplificar >>>>>>>> df0 = pd.DataFrame([list(range(i,i+5)) for i in range(0,50,5)], >>>>>>>> columns = range(5)) >>>>>>>> >>>>>>>> #creamos el dataframe de destino con 10 columnas >>>>>>>> df1 = pd.DataFrame(columns = range(10)) >>>>>>>> >>>>>>>> # De esta forma estás usando los índices del dataframe df0 para >>>>>>>> hacer las combinaciones >>>>>>>> for i,j in enumerate(combinations(df0.index,2)): >>>>>>>> df1.loc[i] = np.append(df0.ix[j[0]], df0.ix[j[1]]) >>>>>>>> >>>>>>>> El dataframe df1 tendría todas las combinaciones. Me sigue >>>>>>>> pareciendo complicado e innecesario lo que quieres hacer (a no ser que sea >>>>>>>> un ejercicio para clase y entonces podría entender lo rebuscado del asunto). >>>>>>>> >>>>>>>> Saludos. >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> 2014-05-13 2:12 GMT-05:00 Kiko : >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> El 13 de mayo de 2014, 7:23, AGTUGO escribió: >>>>>>>>>> >>>>>>>>>> Hola, >>>>>>>>>>> >>>>>>>>>>> He estado tratando de hacer implementacion solamente con panda >>>>>>>>>>> de lo siguiente que ya tengo con numpy, pero no me ha salido nada bien. >>>>>>>>>>> Para los mas entradillos con pandas espero que lo siguiente sea trivial. >>>>>>>>>>> >>>>>>>>>>> La entrada son datos tabulados de dos dimensiones o una matrix, >>>>>>>>>>> la idea es formar todas las combinaciones, sin repetir y sin sustitución, >>>>>>>>>>> de los renglones. La pareja de renglones se ponen en un solo renglon. >>>>>>>>>>> >>>>>>>>>>> Mi algoritmo actual es crear los indices de las combinaciones >>>>>>>>>>> posibles, y despues crear la mezcla usando los indices. En codigo sería lo >>>>>>>>>>> siguiente. >>>>>>>>>>> >>>>>>>>>>> #### combinaciones.py >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> import numpy as np >>>>>>>>>>> import itertools >>>>>>>>>>> rows = 10 >>>>>>>>>>> columns =5 >>>>>>>>>>> data = np.arange(rows*columns).reshape(rows,columns) >>>>>>>>>>> print('\n===Data===\n') >>>>>>>>>>> print(data) >>>>>>>>>>> to_mix = np.arange(rows) >>>>>>>>>>> mixed = list(itertools.product(to_mix,to_mix)) >>>>>>>>>>> combination = [x for x in mixed if (x[0]< x[1])] >>>>>>>>>>> combination = np.array(combination) >>>>>>>>>>> print('\n===Combination===\n') >>>>>>>>>>> print(combination) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> final_data = >>>>>>>>>>> np.hstack((data[combination[:,0],:],data[combination[:,1],:])) >>>>>>>>>>> print('\n===Final Data===\n') >>>>>>>>>>> print(final_data) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> No entiendo muy bien qué quieres hacer. Si tienes Pandas, tienes >>>>>>>>>> Numpy.¿Por qué no simplemente haces un DataFrame usando el numpy array >>>>>>>>>> final que has obtenido? >>>>>>>>>> >>>>>>>>>> Sin usar numpy (que deberías tener instalado porque tienes Pandas >>>>>>>>>> instalado, repito): >>>>>>>>>> >>>>>>>>>> from itertools import combinations >>>>>>>>>> >>>>>>>>>> lista = [list(range(i,i+5)) for i in range(0,50,5)] >>>>>>>>>> final = [] >>>>>>>>>> for i in combinations(range(10),2): >>>>>>>>>> final.append(lista[i[0]]+lista[i[1]]) >>>>>>>>>> df = pd.DataFrame(final, columns = range(10)) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Resultado: >>>>>>>>>>> >>>>>>>>>>> ===Data=== >>>>>>>>>>> >>>>>>>>>>> [[ 0 1 2 3 4] >>>>>>>>>>> [ 5 6 7 8 9] >>>>>>>>>>> [10 11 12 13 14] >>>>>>>>>>> ..., >>>>>>>>>>> [35 36 37 38 39] >>>>>>>>>>> [40 41 42 43 44] >>>>>>>>>>> [45 46 47 48 49]] >>>>>>>>>>> >>>>>>>>>>> ===Combination=== >>>>>>>>>>> >>>>>>>>>>> [[0 1] >>>>>>>>>>> [0 2] >>>>>>>>>>> [0 3] >>>>>>>>>>> ..., >>>>>>>>>>> [7 8] >>>>>>>>>>> [7 9] >>>>>>>>>>> [8 9]] >>>>>>>>>>> >>>>>>>>>>> ===Final Data=== >>>>>>>>>>> >>>>>>>>>>> [[ 0 1 2 ..., 7 8 9] >>>>>>>>>>> [ 0 1 2 ..., 12 13 14] >>>>>>>>>>> [ 0 1 2 ..., 17 18 19] >>>>>>>>>>> ..., >>>>>>>>>>> [35 36 37 ..., 42 43 44] >>>>>>>>>>> [35 36 37 ..., 47 48 49] >>>>>>>>>>> [40 41 42 ..., 47 48 49]] >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Al parecer no es tan sencillo crear un nuevo dataframe usando >>>>>>>>>>> los indices en panda. Espero que me puedan dar una orientación saludos. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Arturo Muñoz Tolosa >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Python-es mailing list >>>>>>>>>>> Python-es en python.org >>>>>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> Python-es mailing list >>>>>>>>>> Python-es en python.org >>>>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Arturo Muñoz Tolosa >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Python-es mailing list >>>>>>>>> Python-es en python.org >>>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Python-es mailing list >>>>>>>> Python-es en python.org >>>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Arturo Muñoz Tolosa >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Python-es mailing list >>>>>>> Python-es en python.org >>>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Python-es mailing list >>>>>> Python-es en python.org >>>>>> https://mail.python.org/mailman/listinfo/python-es >>>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Arturo Muñoz Tolosa >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> >>> -- >>> Arturo Muñoz Tolosa >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- *monoBOT* Visite mi sitio(Visit my site): monobotblog.alvarezalonso.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From funollet en fastmail.fm Wed May 14 13:22:56 2014 From: funollet en fastmail.fm (Jordi Funollet Pujol) Date: Wed, 14 May 2014 13:22:56 +0200 Subject: [Python-es] [offtopic] oferta de trabajo en Native Instruments (Berlin) Message-ID: <53735210.1090701@fastmail.fm> Un buen amigo, ex-compañero de trabajo y notable pythonista, Bram de Jong, busca gente para su equipo en National Instruments. Algun perfil más de sistemas, algun perfil mas de desarrollo. Las posiciones: http://goo.gl/f3EyCJ http://goo.gl/KbXXYy Podeis pedirle mas detalles a Bram de Jong, en español o inglés. Email: bram [dot] dejong [aroba] native-instruments.de Twitter: @bdejong -- Jordi Funollet Pujol http://www.linkedin.com/in/jordifunollet From mlacunza en gmail.com Wed May 14 16:57:52 2014 From: mlacunza en gmail.com (Mario Lacunza) Date: Wed, 14 May 2014 09:57:52 -0500 Subject: [Python-es] Imitar una macro Message-ID: Hola, tengo un requerimiento de un cliente y no se bien si es posible con Python, la idea es crear un programa q ejecute ciertos comandos en auto en un software externo para Windows al estilo de las macros de Excel x ejem, q uno va grabando los pasos y luego se ejecutan. El programa en cuestion no tiene opcion de aceptar argumentos en el EXE asimismo dentro del EXE principal este llama a un par de subprogramas EXE para hacer unos calculos. La idea seria el programa en python abriria el EXE principal y "haria" click en los menus botones etc etc en auto. Es decir lo q se quiere es automatizar la parte humana de operar el sistema ya que el cliente tiene q repetir este proceso miles de veces por un trabajo especifico, es posible? alguna idea de como se podria llevar a cabo esto? Ojo q no estoy pidiendo codigo, se como abrir un programa externo, posiblemente necesite threads etc solo la idea de como afrontar el problema y si es posible hacerlo claro esta. Gracias de antemano! Saludos / Best regards Mario Lacunza Email:: mlacunza en gmail.com Personal Website:: http://www.lacunza.biz/ Hosting:: http://mlv-host.com/ Mascotas Perdidas:: http://mascotas-perdidas.com/ Google Talk / Y! messenger / Skype: mlacunzav Lima - Peru ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Wed May 14 17:34:07 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Wed, 14 May 2014 17:34:07 +0200 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: El 14/05/2014 16:58, "Mario Lacunza" escribió: > > Hola, > > tengo un requerimiento de un cliente y no se bien si es posible con Python, la idea es crear un programa q ejecute ciertos comandos en auto en un software externo para Windows al estilo de las macros de Excel x ejem, q uno va grabando los pasos y luego se ejecutan. > > El programa en cuestion no tiene opcion de aceptar argumentos en el EXE asimismo dentro del EXE principal este llama a un par de subprogramas EXE para hacer unos calculos. > > La idea seria el programa en python abriria el EXE principal y "haria" click en los menus botones etc etc en auto. > > Es decir lo q se quiere es automatizar la parte humana de operar el sistema ya que el cliente tiene q repetir este proceso miles de veces por un trabajo especifico, es posible? alguna idea de como se podria llevar a cabo esto? > > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, posiblemente necesite threads etc solo la idea de como afrontar el problema y si es posible hacerlo claro esta. Es jython, pero igual te vale: http://www.sikuli.org/ > > Gracias de antemano! > > Saludos / Best regards > > Mario Lacunza > Email:: mlacunza en gmail.com > Personal Website:: http://www.lacunza.biz/ > Hosting:: http://mlv-host.com/ > Mascotas Perdidas:: http://mascotas-perdidas.com/ > Google Talk / Y! messenger / Skype: mlacunzav > > Lima - Peru > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From mlacunza en gmail.com Wed May 14 18:00:49 2014 From: mlacunza en gmail.com (Mario Lacunza) Date: Wed, 14 May 2014 11:00:49 -0500 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: Hola Chema, SI!! eso es muchas gracias! Saludos / Best regards Mario Lacunza Email:: mlacunza en gmail.com Personal Website:: http://www.lacunza.biz/ Hosting:: http://mlv-host.com/ Mascotas Perdidas:: http://mascotas-perdidas.com/ Google Talk / Y! messenger / Skype: mlacunzav Lima - Peru El 14 de mayo de 2014, 10:34, Chema Cortes escribió: > > El 14/05/2014 16:58, "Mario Lacunza" escribió: > > > > > Hola, > > > > tengo un requerimiento de un cliente y no se bien si es posible con > Python, la idea es crear un programa q ejecute ciertos comandos en auto en > un software externo para Windows al estilo de las macros de Excel x ejem, q > uno va grabando los pasos y luego se ejecutan. > > > > El programa en cuestion no tiene opcion de aceptar argumentos en el EXE > asimismo dentro del EXE principal este llama a un par de subprogramas EXE > para hacer unos calculos. > > > > La idea seria el programa en python abriria el EXE principal y "haria" > click en los menus botones etc etc en auto. > > > > Es decir lo q se quiere es automatizar la parte humana de operar el > sistema ya que el cliente tiene q repetir este proceso miles de veces por > un trabajo especifico, es posible? alguna idea de como se podria llevar a > cabo esto? > > > > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, > posiblemente necesite threads etc solo la idea de como afrontar el problema > y si es posible hacerlo claro esta. > > Es jython, pero igual te vale: > http://www.sikuli.org/ > > > > > Gracias de antemano! > > > > Saludos / Best regards > > > > Mario Lacunza > > Email:: mlacunza en gmail.com > > Personal Website:: http://www.lacunza.biz/ > > Hosting:: http://mlv-host.com/ > > Mascotas Perdidas:: http://mascotas-perdidas.com/ > > Google Talk / Y! messenger / Skype: mlacunzav > > > > Lima - Peru > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > https://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From revxfire en gmail.com Wed May 14 18:20:00 2014 From: revxfire en gmail.com (Victor Villalobos) Date: Wed, 14 May 2014 11:50:00 -0430 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: Chema es una base de datos, excelente me interesaba esto tambien. El 14 de mayo de 2014, 11:30, Mario Lacunza escribió: > Hola Chema, > > SI!! eso es muchas gracias! > > Saludos / Best regards > > Mario Lacunza > Email:: mlacunza en gmail.com > Personal Website:: http://www.lacunza.biz/ > Hosting:: http://mlv-host.com/ > Mascotas Perdidas:: http://mascotas-perdidas.com/ > Google Talk / Y! messenger / Skype: mlacunzav > > Lima - Peru > > > El 14 de mayo de 2014, 10:34, Chema Cortes escribió: > > >> El 14/05/2014 16:58, "Mario Lacunza" escribió: >> >> > >> > Hola, >> > >> > tengo un requerimiento de un cliente y no se bien si es posible con >> Python, la idea es crear un programa q ejecute ciertos comandos en auto en >> un software externo para Windows al estilo de las macros de Excel x ejem, q >> uno va grabando los pasos y luego se ejecutan. >> > >> > El programa en cuestion no tiene opcion de aceptar argumentos en el EXE >> asimismo dentro del EXE principal este llama a un par de subprogramas EXE >> para hacer unos calculos. >> > >> > La idea seria el programa en python abriria el EXE principal y "haria" >> click en los menus botones etc etc en auto. >> > >> > Es decir lo q se quiere es automatizar la parte humana de operar el >> sistema ya que el cliente tiene q repetir este proceso miles de veces por >> un trabajo especifico, es posible? alguna idea de como se podria llevar a >> cabo esto? >> > >> > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, >> posiblemente necesite threads etc solo la idea de como afrontar el problema >> y si es posible hacerlo claro esta. >> >> Es jython, pero igual te vale: >> http://www.sikuli.org/ >> >> > >> > Gracias de antemano! >> > >> > Saludos / Best regards >> > >> > Mario Lacunza >> > Email:: mlacunza en gmail.com >> > Personal Website:: http://www.lacunza.biz/ >> > Hosting:: http://mlv-host.com/ >> > Mascotas Perdidas:: http://mascotas-perdidas.com/ >> > Google Talk / Y! messenger / Skype: mlacunzav >> > >> > Lima - Peru >> > >> > _______________________________________________ >> > Python-es mailing list >> > Python-es en python.org >> > https://mail.python.org/mailman/listinfo/python-es >> > FAQ: http://python-es-faq.wikidot.com/ >> > >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Victor Villalobos Bahia Pirata Inversiones Villalobos Balzan. 0412 6882141 ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From agtugo en gmail.com Wed May 14 19:14:22 2014 From: agtugo en gmail.com (AGTUGO) Date: Wed, 14 May 2014 12:14:22 -0500 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: La pregunta es si Chema es relacional o no. 2014-05-14 11:20 GMT-05:00 Victor Villalobos : > Chema es una base de datos, excelente me interesaba esto tambien. > > > El 14 de mayo de 2014, 11:30, Mario Lacunza escribió: > > Hola Chema, >> >> SI!! eso es muchas gracias! >> >> Saludos / Best regards >> >> Mario Lacunza >> Email:: mlacunza en gmail.com >> Personal Website:: http://www.lacunza.biz/ >> Hosting:: http://mlv-host.com/ >> Mascotas Perdidas:: http://mascotas-perdidas.com/ >> Google Talk / Y! messenger / Skype: mlacunzav >> >> Lima - Peru >> >> >> El 14 de mayo de 2014, 10:34, Chema Cortes escribió: >> >> >>> El 14/05/2014 16:58, "Mario Lacunza" escribió: >>> >>> > >>> > Hola, >>> > >>> > tengo un requerimiento de un cliente y no se bien si es posible con >>> Python, la idea es crear un programa q ejecute ciertos comandos en auto en >>> un software externo para Windows al estilo de las macros de Excel x ejem, q >>> uno va grabando los pasos y luego se ejecutan. >>> > >>> > El programa en cuestion no tiene opcion de aceptar argumentos en el >>> EXE asimismo dentro del EXE principal este llama a un par de subprogramas >>> EXE para hacer unos calculos. >>> > >>> > La idea seria el programa en python abriria el EXE principal y "haria" >>> click en los menus botones etc etc en auto. >>> > >>> > Es decir lo q se quiere es automatizar la parte humana de operar el >>> sistema ya que el cliente tiene q repetir este proceso miles de veces por >>> un trabajo especifico, es posible? alguna idea de como se podria llevar a >>> cabo esto? >>> > >>> > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, >>> posiblemente necesite threads etc solo la idea de como afrontar el problema >>> y si es posible hacerlo claro esta. >>> >>> Es jython, pero igual te vale: >>> http://www.sikuli.org/ >>> >>> > >>> > Gracias de antemano! >>> > >>> > Saludos / Best regards >>> > >>> > Mario Lacunza >>> > Email:: mlacunza en gmail.com >>> > Personal Website:: http://www.lacunza.biz/ >>> > Hosting:: http://mlv-host.com/ >>> > Mascotas Perdidas:: http://mascotas-perdidas.com/ >>> > Google Talk / Y! messenger / Skype: mlacunzav >>> > >>> > Lima - Peru >>> > >>> > _______________________________________________ >>> > Python-es mailing list >>> > Python-es en python.org >>> > https://mail.python.org/mailman/listinfo/python-es >>> > FAQ: http://python-es-faq.wikidot.com/ >>> > >>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Victor Villalobos > Bahia Pirata > Inversiones Villalobos Balzan. > 0412 6882141 > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Arturo Muñoz Tolosa ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From faltet en gmail.com Wed May 14 21:12:35 2014 From: faltet en gmail.com (Francesc Alted) Date: Wed, 14 May 2014 21:12:35 +0200 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: <5373C023.10609@gmail.com> Chema es más bien 'Big Data' :) El 14/05/14 19:14, AGTUGO ha escrit: > La pregunta es si Chema es relacional o no. > > > 2014-05-14 11:20 GMT-05:00 Victor Villalobos >: > > Chema es una base de datos, excelente me interesaba esto tambien. > > > El 14 de mayo de 2014, 11:30, Mario Lacunza > escribió: > > Hola Chema, > > SI!! eso es muchas gracias! > > Saludos / Best regards > > Mario Lacunza > Email:: mlacunza en gmail.com > Personal Website:: http://www.lacunza.biz/ > Hosting:: http://mlv-host.com/ > Mascotas Perdidas:: http://mascotas-perdidas.com/ > Google Talk / Y! messenger / Skype: mlacunzav > > Lima - Peru > > > El 14 de mayo de 2014, 10:34, Chema Cortes > escribió: > > > El 14/05/2014 16:58, "Mario Lacunza" > escribió: > > > > > > Hola, > > > > tengo un requerimiento de un cliente y no se bien si es > posible con Python, la idea es crear un programa q ejecute > ciertos comandos en auto en un software externo para > Windows al estilo de las macros de Excel x ejem, q uno va > grabando los pasos y luego se ejecutan. > > > > El programa en cuestion no tiene opcion de aceptar > argumentos en el EXE asimismo dentro del EXE principal > este llama a un par de subprogramas EXE para hacer unos > calculos. > > > > La idea seria el programa en python abriria el EXE > principal y "haria" click en los menus botones etc etc en > auto. > > > > Es decir lo q se quiere es automatizar la parte humana > de operar el sistema ya que el cliente tiene q repetir > este proceso miles de veces por un trabajo especifico, es > posible? alguna idea de como se podria llevar a cabo esto? > > > > Ojo q no estoy pidiendo codigo, se como abrir un > programa externo, posiblemente necesite threads etc solo > la idea de como afrontar el problema y si es posible > hacerlo claro esta. > > Es jython, pero igual te vale: > http://www.sikuli.org/ > > > > > Gracias de antemano! > > > > Saludos / Best regards > > > > Mario Lacunza > > Email:: mlacunza en gmail.com > > Personal Website:: http://www.lacunza.biz/ > > Hosting:: http://mlv-host.com/ > > Mascotas Perdidas:: http://mascotas-perdidas.com/ > > Google Talk / Y! messenger / Skype: mlacunzav > > > > Lima - Peru > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > https://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > -- > Victor Villalobos > Bahia Pirata > Inversiones Villalobos Balzan. > 0412 6882141 > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > -- > Arturo Muñoz Tolosa > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From monobot.soft en gmail.com Wed May 14 21:25:31 2014 From: monobot.soft en gmail.com (monoBOT) Date: Wed, 14 May 2014 20:25:31 +0100 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: ?class PyCh3m4(VanRosuum): """super clase de Python""" def cuestion(self, formulacion): if formulacion in self.conocimientos: return self.conocimientos[formulacion] else: from.__future__ import conocimientosGodly return conocimientosGodly[formulacion] ? El 14 de mayo de 2014, 18:14, AGTUGO escribió: > La pregunta es si Chema es relacional o no. > > > 2014-05-14 11:20 GMT-05:00 Victor Villalobos : > > Chema es una base de datos, excelente me interesaba esto tambien. >> >> >> El 14 de mayo de 2014, 11:30, Mario Lacunza escribió: >> >> Hola Chema, >>> >>> SI!! eso es muchas gracias! >>> >>> Saludos / Best regards >>> >>> Mario Lacunza >>> Email:: mlacunza en gmail.com >>> Personal Website:: http://www.lacunza.biz/ >>> Hosting:: http://mlv-host.com/ >>> Mascotas Perdidas:: http://mascotas-perdidas.com/ >>> Google Talk / Y! messenger / Skype: mlacunzav >>> >>> Lima - Peru >>> >>> >>> El 14 de mayo de 2014, 10:34, Chema Cortes escribió: >>> >>> >>>> El 14/05/2014 16:58, "Mario Lacunza" escribió: >>>> >>>> > >>>> > Hola, >>>> > >>>> > tengo un requerimiento de un cliente y no se bien si es posible con >>>> Python, la idea es crear un programa q ejecute ciertos comandos en auto en >>>> un software externo para Windows al estilo de las macros de Excel x ejem, q >>>> uno va grabando los pasos y luego se ejecutan. >>>> > >>>> > El programa en cuestion no tiene opcion de aceptar argumentos en el >>>> EXE asimismo dentro del EXE principal este llama a un par de subprogramas >>>> EXE para hacer unos calculos. >>>> > >>>> > La idea seria el programa en python abriria el EXE principal y >>>> "haria" click en los menus botones etc etc en auto. >>>> > >>>> > Es decir lo q se quiere es automatizar la parte humana de operar el >>>> sistema ya que el cliente tiene q repetir este proceso miles de veces por >>>> un trabajo especifico, es posible? alguna idea de como se podria llevar a >>>> cabo esto? >>>> > >>>> > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, >>>> posiblemente necesite threads etc solo la idea de como afrontar el problema >>>> y si es posible hacerlo claro esta. >>>> >>>> Es jython, pero igual te vale: >>>> http://www.sikuli.org/ >>>> >>>> > >>>> > Gracias de antemano! >>>> > >>>> > Saludos / Best regards >>>> > >>>> > Mario Lacunza >>>> > Email:: mlacunza en gmail.com >>>> > Personal Website:: http://www.lacunza.biz/ >>>> > Hosting:: http://mlv-host.com/ >>>> > Mascotas Perdidas:: http://mascotas-perdidas.com/ >>>> > Google Talk / Y! messenger / Skype: mlacunzav >>>> > >>>> > Lima - Peru >>>> > >>>> > _______________________________________________ >>>> > Python-es mailing list >>>> > Python-es en python.org >>>> > https://mail.python.org/mailman/listinfo/python-es >>>> > FAQ: http://python-es-faq.wikidot.com/ >>>> > >>>> >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> >> -- >> Victor Villalobos >> Bahia Pirata >> Inversiones Villalobos Balzan. >> 0412 6882141 >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Arturo Muñoz Tolosa > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- *monoBOT* Visite mi sitio(Visit my site): monobotblog.alvarezalonso.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Wed May 14 21:48:17 2014 From: kikocorreoso en gmail.com (Kiko) Date: Wed, 14 May 2014 21:48:17 +0200 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: El 14 de mayo de 2014, 21:25, monoBOT escribió: > ?class PyCh3m4(VanRosuum): > """super clase de Python""" > def cuestion(self, formulacion): > if formulacion in self.conocimientos: > return self.conocimientos[formulacion] > else: > from.__future__ import conocimientosGodly > return conocimientosGodly[formulacion] > ? > > jajajajaja. Probad esto en la consola. A mi me sale así: In [1]: 'Chema' is 'God' Out[1]: True > > > > El 14 de mayo de 2014, 18:14, AGTUGO escribió: > >> La pregunta es si Chema es relacional o no. >> >> >> 2014-05-14 11:20 GMT-05:00 Victor Villalobos : >> >> Chema es una base de datos, excelente me interesaba esto tambien. >>> >>> >>> El 14 de mayo de 2014, 11:30, Mario Lacunza escribió: >>> >>> Hola Chema, >>>> >>>> SI!! eso es muchas gracias! >>>> >>>> Saludos / Best regards >>>> >>>> Mario Lacunza >>>> Email:: mlacunza en gmail.com >>>> Personal Website:: http://www.lacunza.biz/ >>>> Hosting:: http://mlv-host.com/ >>>> Mascotas Perdidas:: http://mascotas-perdidas.com/ >>>> Google Talk / Y! messenger / Skype: mlacunzav >>>> >>>> Lima - Peru >>>> >>>> >>>> El 14 de mayo de 2014, 10:34, Chema Cortes escribió: >>>> >>>> >>>>> El 14/05/2014 16:58, "Mario Lacunza" escribió: >>>>> >>>>> > >>>>> > Hola, >>>>> > >>>>> > tengo un requerimiento de un cliente y no se bien si es posible con >>>>> Python, la idea es crear un programa q ejecute ciertos comandos en auto en >>>>> un software externo para Windows al estilo de las macros de Excel x ejem, q >>>>> uno va grabando los pasos y luego se ejecutan. >>>>> > >>>>> > El programa en cuestion no tiene opcion de aceptar argumentos en el >>>>> EXE asimismo dentro del EXE principal este llama a un par de subprogramas >>>>> EXE para hacer unos calculos. >>>>> > >>>>> > La idea seria el programa en python abriria el EXE principal y >>>>> "haria" click en los menus botones etc etc en auto. >>>>> > >>>>> > Es decir lo q se quiere es automatizar la parte humana de operar el >>>>> sistema ya que el cliente tiene q repetir este proceso miles de veces por >>>>> un trabajo especifico, es posible? alguna idea de como se podria llevar a >>>>> cabo esto? >>>>> > >>>>> > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, >>>>> posiblemente necesite threads etc solo la idea de como afrontar el problema >>>>> y si es posible hacerlo claro esta. >>>>> >>>>> Es jython, pero igual te vale: >>>>> http://www.sikuli.org/ >>>>> >>>>> > >>>>> > Gracias de antemano! >>>>> > >>>>> > Saludos / Best regards >>>>> > >>>>> > Mario Lacunza >>>>> > Email:: mlacunza en gmail.com >>>>> > Personal Website:: http://www.lacunza.biz/ >>>>> > Hosting:: http://mlv-host.com/ >>>>> > Mascotas Perdidas:: http://mascotas-perdidas.com/ >>>>> > Google Talk / Y! messenger / Skype: mlacunzav >>>>> > >>>>> > Lima - Peru >>>>> > >>>>> > _______________________________________________ >>>>> > Python-es mailing list >>>>> > Python-es en python.org >>>>> > https://mail.python.org/mailman/listinfo/python-es >>>>> > FAQ: http://python-es-faq.wikidot.com/ >>>>> > >>>>> >>>>> >>>>> _______________________________________________ >>>>> Python-es mailing list >>>>> Python-es en python.org >>>>> https://mail.python.org/mailman/listinfo/python-es >>>>> FAQ: http://python-es-faq.wikidot.com/ >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Python-es mailing list >>>> Python-es en python.org >>>> https://mail.python.org/mailman/listinfo/python-es >>>> FAQ: http://python-es-faq.wikidot.com/ >>>> >>>> >>> >>> >>> -- >>> Victor Villalobos >>> Bahia Pirata >>> Inversiones Villalobos Balzan. >>> 0412 6882141 >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> >> -- >> Arturo Muñoz Tolosa >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > *monoBOT* > Visite mi sitio(Visit my site): monobotblog.alvarezalonso.es > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From inigo_aldazabal en ehu.es Wed May 14 22:53:53 2014 From: inigo_aldazabal en ehu.es (Inigo Aldazabal Mensa) Date: Wed, 14 May 2014 22:53:53 +0200 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: <20140514225353.0f4dfea4@U002498.sn.ehu.es> On Wed, 14 May 2014 09:57:52 -0500 Mario Lacunza wrote: > Hola, > > tengo un requerimiento de un cliente y no se bien si es posible con > Python, la idea es crear un programa q ejecute ciertos comandos en > auto en un software externo para Windows al estilo de las macros de > Excel x ejem, q uno va grabando los pasos y luego se ejecutan. > > El programa en cuestion no tiene opcion de aceptar argumentos en el > EXE asimismo dentro del EXE principal este llama a un par de > subprogramas EXE para hacer unos calculos. > > La idea seria el programa en python abriria el EXE principal y "haria" > click en los menus botones etc etc en auto. > > Es decir lo q se quiere es automatizar la parte humana de operar el > sistema ya que el cliente tiene q repetir este proceso miles de veces > por un trabajo especifico, es posible? alguna idea de como se podria > llevar a cabo esto? > > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, > posiblemente necesite threads etc solo la idea de como afrontar el > problema y si es posible hacerlo claro esta. > > Gracias de antemano! mmm no es python, pero por si te sirve para el fin... http://www.autoitscript.com/site/ > > Saludos / Best regards > > Mario Lacunza > Email:: mlacunza en gmail.com > Personal Website:: http://www.lacunza.biz/ > Hosting:: http://mlv-host.com/ > Mascotas Perdidas:: http://mascotas-perdidas.com/ > Google Talk / Y! messenger / Skype: mlacunzav > > Lima - Peru From morillas en gmail.com Thu May 15 13:06:35 2014 From: morillas en gmail.com (Luis Miguel Morillas) Date: Thu, 15 May 2014 13:06:35 +0200 Subject: [Python-es] =?utf-8?q?Llamamiento=3A_creaci=C3=B3n_de_la_comunida?= =?utf-8?q?d_de_autoaprendizaje_de_python_en_Almer=C3=ADa?= Message-ID: De parte de Ismael, del HackLab de Almería ... Hola: En la órbita del HackLab Almería ha surgido la necesidad de organizar cursos y talleres de formación en python para gentes con toda clase de perfil. Así que tenemos pendiente levantar esa iniciativa[1]. Estamos pensando en lanzar una comunidad de autoaprendizaje que tenga soporte presencial y telemático y que pueda abarcar toda la provincia. El caso es que en Almería capital no terminamos de encontrar gente suficiente para apoyarnos en los talleres presenciales y para tutelar y atender las dudas en los foros. Por esto que me dirijo al foro para convocar a la iniciativa a cualquier persona con las habilidades suficientes y ganas de levantar una comunidad local en Almería capital y provincia. Los interesados pueden escribirme o, mejor, escribirnos directamente en nuestro foro. Gracias de antemano. Saludos. [1] http://hacklabalmeria.net/foro/#nabble-td5001789 -- Ismael Olea http://olea.org/diario/ From geistein en gmail.com Thu May 15 14:25:02 2014 From: geistein en gmail.com (GEIS AUGUSTO GARCIA ROMERO) Date: Thu, 15 May 2014 07:25:02 -0500 Subject: [Python-es] =?utf-8?q?Llamamiento=3A_creaci=C3=B3n_de_la_comunida?= =?utf-8?q?d_de_autoaprendizaje_de_python_en_Almer=C3=ADa?= In-Reply-To: References: Message-ID: Bueno yo soy de Colombia pero si se puede unir uno de manera virtual me apunto. 2014-05-15 6:06 GMT-05:00 Luis Miguel Morillas : > De parte de Ismael, del HackLab de Almería ... > > Hola: > > En la órbita del HackLab Almería ha surgido la necesidad de organizar > cursos y talleres de formación en python para gentes con toda clase de > perfil. Así que tenemos pendiente levantar esa iniciativa[1]. > > Estamos pensando en lanzar una comunidad de autoaprendizaje que tenga > soporte presencial y telemático y que pueda abarcar toda la provincia. > > El caso es que en Almería capital no terminamos de encontrar gente > suficiente para apoyarnos en los talleres presenciales y para tutelar > y atender las dudas en los foros. Por esto que me dirijo al foro para > convocar a la iniciativa a cualquier persona con las habilidades > suficientes y ganas de levantar una comunidad local en Almería capital > y provincia. > > Los interesados pueden escribirme o, mejor, escribirnos directamente > en nuestro foro. > > Gracias de antemano. Saludos. > > [1] http://hacklabalmeria.net/foro/#nabble-td5001789 > > > -- > > Ismael Olea > > http://olea.org/diario/ > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > -- "Es mejor luchar y haber perdido que quedarse con la duda de lo que pudo haber sido." Geis. Tecnologo en Sistemas y Electronica e Instrumentacion ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From hadercarrillo en gmail.com Thu May 15 14:28:54 2014 From: hadercarrillo en gmail.com (Hader Carrillo) Date: Thu, 15 May 2014 07:28:54 -0500 Subject: [Python-es] =?utf-8?q?Llamamiento=3A_creaci=C3=B3n_de_la_comunida?= =?utf-8?q?d_de_autoaprendizaje_de_python_en_Almer=C3=ADa?= In-Reply-To: References: Message-ID: Buenas, Soy Colombiano y me apunto en caso de que se de la opción para una comunidad virtual. El 15 de mayo de 2014, 7:25, GEIS AUGUSTO GARCIA ROMERO escribió: > Bueno yo soy de Colombia pero si se puede unir uno de manera virtual me > apunto. > > > 2014-05-15 6:06 GMT-05:00 Luis Miguel Morillas : > > De parte de Ismael, del HackLab de Almería ... >> >> Hola: >> >> En la órbita del HackLab Almería ha surgido la necesidad de organizar >> cursos y talleres de formación en python para gentes con toda clase de >> perfil. Así que tenemos pendiente levantar esa iniciativa[1]. >> >> Estamos pensando en lanzar una comunidad de autoaprendizaje que tenga >> soporte presencial y telemático y que pueda abarcar toda la provincia. >> >> El caso es que en Almería capital no terminamos de encontrar gente >> suficiente para apoyarnos en los talleres presenciales y para tutelar >> y atender las dudas en los foros. Por esto que me dirijo al foro para >> convocar a la iniciativa a cualquier persona con las habilidades >> suficientes y ganas de levantar una comunidad local en Almería capital >> y provincia. >> >> Los interesados pueden escribirme o, mejor, escribirnos directamente >> en nuestro foro. >> >> Gracias de antemano. Saludos. >> >> [1] http://hacklabalmeria.net/foro/#nabble-td5001789 >> >> >> -- >> >> Ismael Olea >> >> http://olea.org/diario/ >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> > > > > -- > "Es mejor luchar y haber perdido que quedarse con la duda de lo que pudo > haber sido." Geis. Tecnologo en Sistemas y Electronica e Instrumentacion > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- *Amat victoria curam* ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From juanlu001 en gmail.com Thu May 15 14:43:13 2014 From: juanlu001 en gmail.com (Juan Luis Cano) Date: Thu, 15 May 2014 14:43:13 +0200 Subject: [Python-es] =?iso-8859-1?q?Llamamiento=3A_creaci=F3n_de_la_comuni?= =?iso-8859-1?q?dad_de_autoaprendizaje_de_python_en_Almer=EDa?= In-Reply-To: References: Message-ID: <5374B661.90701@gmail.com> On 05/15/2014 01:06 PM, Luis Miguel Morillas wrote: > De parte de Ismael, del HackLab de Almería ... > > Hola: > > En la órbita del HackLab Almería ha surgido la necesidad de organizar > cursos y talleres de formación en python para gentes con toda clase de > perfil. Así que tenemos pendiente levantar esa iniciativa[1]. > > Estamos pensando en lanzar una comunidad de autoaprendizaje que tenga > soporte presencial y telemático y que pueda abarcar toda la provincia. > > El caso es que en Almería capital no terminamos de encontrar gente > suficiente para apoyarnos en los talleres presenciales y para tutelar > y atender las dudas en los foros. Por esto que me dirijo al foro para > convocar a la iniciativa a cualquier persona con las habilidades > suficientes y ganas de levantar una comunidad local en Almería capital > y provincia. > > Los interesados pueden escribirme o, mejor, escribirnos directamente > en nuestro foro. > > Gracias de antemano. Saludos. > > [1] http://hacklabalmeria.net/foro/#nabble-td5001789 Hola Luis Miguel, te recomiendo que reenvíes el mensaje a la lista de correo de Python España. Por si no lo sabías, hemos creado una asociación de ámbito nacional y estamos empezando a movernos bastante. general en lists.es.python.org https://lists.es.python.org/listinfo/general ¿Alguno vinisteis a la PyConES el octubre pasado en Madrid? Especialmente, en la asociación estamos también considerando ayudar al establecimiento de comunidades locales. Por ejemplo, en Python Madrid hemos visto que crear un grupo en Meetup nos ha ayudado a captar algunos miembros nuevos, así que por ejemplo podríais pedir que se os financiase la creación de un Meetup en Almería (que de todos modos es muy barato). Un saludo y mucha suerte :) Juanlu From pych3m4 en gmail.com Thu May 15 18:00:36 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Thu, 15 May 2014 18:00:36 +0200 Subject: [Python-es] Imitar una macro In-Reply-To: References: Message-ID: El 14 de mayo de 2014, 21:48, Kiko escribió: > El 14 de mayo de 2014, 21:25, monoBOT escribió: > > ?class PyCh3m4(VanRosuum): >> """super clase de Python""" >> def cuestion(self, formulacion): >> if formulacion in self.conocimientos: >> return self.conocimientos[formulacion] >> else: >> from.__future__ import conocimientosGodly >> return conocimientosGodly[formulacion] >> ? >> >> > jajajajaja. Probad esto en la consola. A mi me sale así: > > In [1]: 'Chema' is 'God' > Out[1]: True > > Y he sido tan tonto que he ido a probarlo :D -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From mlacunza en gmail.com Thu May 15 18:07:34 2014 From: mlacunza en gmail.com (Mario Lacunza) Date: Thu, 15 May 2014 11:07:34 -0500 Subject: [Python-es] Imitar una macro In-Reply-To: <20140514225353.0f4dfea4@U002498.sn.ehu.es> References: <20140514225353.0f4dfea4@U002498.sn.ehu.es> Message-ID: Hola, Si tambien tiene buena pinta gracias!! Saludos / Best regards Mario Lacunza Email:: mlacunza en gmail.com Personal Website:: http://www.lacunza.biz/ Hosting:: http://mlv-host.com/ Mascotas Perdidas:: http://mascotas-perdidas.com/ Google Talk / Y! messenger / Skype: mlacunzav Lima - Peru El 14 de mayo de 2014, 15:53, Inigo Aldazabal Mensa escribió: > On Wed, 14 May 2014 09:57:52 -0500 > Mario Lacunza wrote: > > > Hola, > > > > tengo un requerimiento de un cliente y no se bien si es posible con > > Python, la idea es crear un programa q ejecute ciertos comandos en > > auto en un software externo para Windows al estilo de las macros de > > Excel x ejem, q uno va grabando los pasos y luego se ejecutan. > > > > El programa en cuestion no tiene opcion de aceptar argumentos en el > > EXE asimismo dentro del EXE principal este llama a un par de > > subprogramas EXE para hacer unos calculos. > > > > La idea seria el programa en python abriria el EXE principal y "haria" > > click en los menus botones etc etc en auto. > > > > Es decir lo q se quiere es automatizar la parte humana de operar el > > sistema ya que el cliente tiene q repetir este proceso miles de veces > > por un trabajo especifico, es posible? alguna idea de como se podria > > llevar a cabo esto? > > > > Ojo q no estoy pidiendo codigo, se como abrir un programa externo, > > posiblemente necesite threads etc solo la idea de como afrontar el > > problema y si es posible hacerlo claro esta. > > > > Gracias de antemano! > > mmm no es python, pero por si te sirve para el fin... > http://www.autoitscript.com/site/ > > > > > > Saludos / Best regards > > > > Mario Lacunza > > Email:: mlacunza en gmail.com > > Personal Website:: http://www.lacunza.biz/ > > Hosting:: http://mlv-host.com/ > > Mascotas Perdidas:: http://mascotas-perdidas.com/ > > Google Talk / Y! messenger / Skype: mlacunzav > > > > Lima - Peru > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Thu May 15 23:42:51 2014 From: kikocorreoso en gmail.com (Kiko) Date: Thu, 15 May 2014 23:42:51 +0200 Subject: [Python-es] =?utf-8?q?Llamamiento=3A_creaci=C3=B3n_de_la_comunida?= =?utf-8?q?d_de_autoaprendizaje_de_python_en_Almer=C3=ADa?= In-Reply-To: <5374B661.90701@gmail.com> References: <5374B661.90701@gmail.com> Message-ID: El 15 de mayo de 2014, 14:43, Juan Luis Cano escribió: > On 05/15/2014 01:06 PM, Luis Miguel Morillas wrote: > >> De parte de Ismael, del HackLab de Almería ... >> >> Hola: >> >> En la órbita del HackLab Almería ha surgido la necesidad de organizar >> cursos y talleres de formación en python para gentes con toda clase de >> perfil. Así que tenemos pendiente levantar esa iniciativa[1]. >> >> Estamos pensando en lanzar una comunidad de autoaprendizaje que tenga >> soporte presencial y telemático y que pueda abarcar toda la provincia. >> >> Hola Luis e Ismael (si estás viendo esta lista). En la lista de Brython (Python 3) acaban de anunciar la siguiente herramienta: http://reeborg.ca/world.html Se puede aprender Python (y otros lenguajes) de forma autodidacta o de forma colaborativa (por ejemplo, con un tutor): https://groups.google.com/d/msgid/brython/6d5e18a6-dfd6-47e9-b549-0eac91e3c7e7%40googlegroups.com?utm_medium=email&utm_source=footer Las tecnologías detrás de ello serían HTML5, CSS, js, coffeescript, Brython (para la parte Python), togetherJS (para conectar entre personas),... También ha salido trinket (en este caso usa skulpt, python 2). Quizá también os pueda resultar interesante para ejecutar código y compartir. Por otra parte, reitero lo que comenta Juanlu, si desde la asociación Python España se puede ofrecer algún tipo de soporte/ayuda que no se nos haya ocurrido, por favor, hacédnoslo saber y vemos las posibilidades. Saludos. El caso es que en Almería capital no terminamos de encontrar gente >> suficiente para apoyarnos en los talleres presenciales y para tutelar >> y atender las dudas en los foros. Por esto que me dirijo al foro para >> convocar a la iniciativa a cualquier persona con las habilidades >> suficientes y ganas de levantar una comunidad local en Almería capital >> y provincia. >> >> Los interesados pueden escribirme o, mejor, escribirnos directamente >> en nuestro foro. >> >> Gracias de antemano. Saludos. >> >> [1] http://hacklabalmeria.net/foro/#nabble-td5001789 >> > > Hola Luis Miguel, te recomiendo que reenvíes el mensaje a la lista de > correo de Python España. Por si no lo sabías, hemos creado una asociación > de ámbito nacional y estamos empezando a movernos bastante. > > general en lists.es.python.org > > https://lists.es.python.org/listinfo/general > > ¿Alguno vinisteis a la PyConES el octubre pasado en Madrid? > > Especialmente, en la asociación estamos también considerando ayudar al > establecimiento de comunidades locales. Por ejemplo, en Python Madrid hemos > visto que crear un grupo en Meetup nos ha ayudado a captar algunos miembros > nuevos, así que por ejemplo podríais pedir que se os financiase la creación > de un Meetup en Almería (que de todos modos es muy barato). > > Un saludo y mucha suerte :) > > Juanlu > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcea en jcea.es Fri May 16 00:36:20 2014 From: jcea en jcea.es (Jesus Cea) Date: Fri, 16 May 2014 00:36:20 +0200 Subject: [Python-es] =?iso-8859-15?q?Llamamiento=3A_creaci=F3n_de_la_comun?= =?iso-8859-15?q?idad_de_autoaprendizaje_de_python_en_Almer=EDa?= In-Reply-To: References: Message-ID: <53754164.9090805@jcea.es> On 15/05/14 13:06, Luis Miguel Morillas wrote: > El caso es que en Almería capital no terminamos de encontrar gente > suficiente para apoyarnos en los talleres presenciales y para tutelar > y atender las dudas en los foros. Por esto que me dirijo al foro para > convocar a la iniciativa a cualquier persona con las habilidades > suficientes y ganas de levantar una comunidad local en Almería capital > y provincia. Puedes probar a convocar unas PyBirras. Si nos avisáis con unos días de antelación, le damos difusión en twitter y en http://calendario.es.python.org/. Un ejemplo que acabo de publicar ahora mismo: Tenerife PyBirras 2.0 https://twitter.com/python_es/status/467070007927922688 -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 538 bytes Desc: OpenPGP digital signature URL: From kausdiv en gmail.com Fri May 16 09:21:33 2014 From: kausdiv en gmail.com (kausdiv) Date: Fri, 16 May 2014 09:21:33 +0200 Subject: [Python-es] =?iso-8859-1?q?Llamamiento=3A_creaci=F3n_de_la_comuni?= =?iso-8859-1?q?dad_de_autoaprendizaje_de_python_en_Almer=EDa?= In-Reply-To: References: Message-ID: <5375BC7D.8080904@gmail.com> Hola.. Yo estoy cerca, en Granada. Y me ofrezco en lo que pueda. Yo elevaría tu propuesta al resto de Andalucía, si se hace telemáticamente cuesta el mismo esfuerzo. Crear una comunidad andaluza de python con objetivos de aprender, seria muy bueno. Saludos. El 15/05/2014 13:06, Luis Miguel Morillas escribió: > De parte de Ismael, del HackLab de Almería ... > > Hola: > > En la órbita del HackLab Almería ha surgido la necesidad de organizar > cursos y talleres de formación en python para gentes con toda clase de > perfil. Así que tenemos pendiente levantar esa iniciativa[1]. > > Estamos pensando en lanzar una comunidad de autoaprendizaje que tenga > soporte presencial y telemático y que pueda abarcar toda la provincia. > > El caso es que en Almería capital no terminamos de encontrar gente > suficiente para apoyarnos en los talleres presenciales y para tutelar > y atender las dudas en los foros. Por esto que me dirijo al foro para > convocar a la iniciativa a cualquier persona con las habilidades > suficientes y ganas de levantar una comunidad local en Almería capital > y provincia. > > Los interesados pueden escribirme o, mejor, escribirnos directamente > en nuestro foro. > > Gracias de antemano. Saludos. > > [1] http://hacklabalmeria.net/foro/#nabble-td5001789 > > From morillas en gmail.com Mon May 19 11:45:25 2014 From: morillas en gmail.com (Luis Miguel Morillas) Date: Mon, 19 May 2014 11:45:25 +0200 Subject: [Python-es] Scraping con scrapy. Message-ID: Alguien ha usado scrapy para hacer un servicio de scraping? Quiero montar un servicio (REST) basado en scrapy, pero por defecto scrapy procesa una cola de urls y termina y no creo que sea buena idea levantar la aplicación cada vez que llega una url. Me gustaría que la cola estuviera escuchando, procesara la cola y en lugar de esperar que se quedara esperando a recibir una nueva entrada. Supongo que se podrá hacer mirando a fondo la arquitectura (twisted) de scrapy ... pero si alguno lo ha hecho antes :) Saludos, -- luismiguel (@lmorillas) From esauro en gmail.com Mon May 19 12:48:23 2014 From: esauro en gmail.com (Esau Rodriguez) Date: Mon, 19 May 2014 11:48:23 +0100 Subject: [Python-es] Scraping con scrapy. In-Reply-To: References: Message-ID: Hola, yo no he utilizado scrapy pero creo que lo que dices lo podrías hacer con Django+celery+scrapy. De hecho en [1] te dejo un enlace donde han hecho algo así, te faltaría meter la interfaz rest. [1] http://stackoverflow.com/questions/11528739/running-scrapy-spiders-in-a-celery-task Saludos, Esaú. 2014-05-19 10:45 GMT+01:00 Luis Miguel Morillas : > Alguien ha usado scrapy para hacer un servicio de scraping? Quiero > montar un servicio (REST) basado en scrapy, pero por defecto scrapy > procesa una cola de urls y termina y no creo que sea buena idea > levantar la aplicación cada vez que llega una url. Me gustaría que la > cola estuviera escuchando, procesara la cola y en lugar de esperar que > se quedara esperando a recibir una nueva entrada. > > Supongo que se podrá hacer mirando a fondo la arquitectura (twisted) > de scrapy ... pero si alguno lo ha hecho antes :) > > > > Saludos, > > -- luismiguel (@lmorillas) > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ -- Esaú Rodríguez esauro en gmail.com From parraletz en gmail.com Mon May 19 12:50:27 2014 From: parraletz en gmail.com (Alex Parra) Date: Mon, 19 May 2014 05:50:27 -0500 Subject: [Python-es] Scraping con scrapy. In-Reply-To: References: Message-ID: Hola, lo que te recomiendo es almacenarlo en alguna base de datos, yo lo almaceno en un mongodb y así no estoy ejecutando scrapy a cada rato :-), de la base sacó las consultas. Sent from my iPhone > On May 19, 2014, at 4:45 AM, Luis Miguel Morillas wrote: > > Alguien ha usado scrapy para hacer un servicio de scraping? Quiero > montar un servicio (REST) basado en scrapy, pero por defecto scrapy > procesa una cola de urls y termina y no creo que sea buena idea > levantar la aplicación cada vez que llega una url. Me gustaría que la > cola estuviera escuchando, procesara la cola y en lugar de esperar que > se quedara esperando a recibir una nueva entrada. > > Supongo que se podrá hacer mirando a fondo la arquitectura (twisted) > de scrapy ... pero si alguno lo ha hecho antes :) > > > > Saludos, > > -- luismiguel (@lmorillas) > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ From azotillo en gmail.com Mon May 19 16:54:53 2014 From: azotillo en gmail.com (Diego pascual lopez) Date: Mon, 19 May 2014 16:54:53 +0200 Subject: [Python-es] Scraping con scrapy. In-Reply-To: References: Message-ID: Buenas, Esta mañana lei el correo y le he estado dando un par de vueltas a la parte de que ventajas tiene levantar el servicio o dejarlo a la escucha, y he llegado a la conclusion de que no tengo ni idea :) Asi que si pudierais decirme que ventajas o desventajas le veis. Un abrazo!!! On 5/19/14, Alex Parra wrote: > Hola, lo que te recomiendo es almacenarlo en alguna base de datos, yo lo > almaceno en un mongodb y así no estoy ejecutando scrapy a cada rato :-), de > la base sacó las consultas. > > Sent from my iPhone > >> On May 19, 2014, at 4:45 AM, Luis Miguel Morillas >> wrote: >> >> Alguien ha usado scrapy para hacer un servicio de scraping? Quiero >> montar un servicio (REST) basado en scrapy, pero por defecto scrapy >> procesa una cola de urls y termina y no creo que sea buena idea >> levantar la aplicación cada vez que llega una url. Me gustaría que la >> cola estuviera escuchando, procesara la cola y en lugar de esperar que >> se quedara esperando a recibir una nueva entrada. >> >> Supongo que se podrá hacer mirando a fondo la arquitectura (twisted) >> de scrapy ... pero si alguno lo ha hecho antes :) >> >> >> >> Saludos, >> >> -- luismiguel (@lmorillas) >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > From morillas en gmail.com Mon May 19 17:53:34 2014 From: morillas en gmail.com (Luis Miguel Morillas) Date: Mon, 19 May 2014 17:53:34 +0200 Subject: [Python-es] Scraping con scrapy. In-Reply-To: References: Message-ID: Yo necesito que cada vez que se suministra una url, se vuelva a parsear la página, porque la información es dinámica (precios de venta o alquileres) Saludos, -- luismiguel (@lmorillas) El día 19 de mayo de 2014, 12:50, Alex Parra escribió: > Hola, lo que te recomiendo es almacenarlo en alguna base de datos, yo lo almaceno en un mongodb y así no estoy ejecutando scrapy a cada rato :-), de la base sacó las consultas. > > Sent from my iPhone > >> On May 19, 2014, at 4:45 AM, Luis Miguel Morillas wrote: >> >> Alguien ha usado scrapy para hacer un servicio de scraping? Quiero >> montar un servicio (REST) basado en scrapy, pero por defecto scrapy >> procesa una cola de urls y termina y no creo que sea buena idea >> levantar la aplicación cada vez que llega una url. Me gustaría que la >> cola estuviera escuchando, procesara la cola y en lugar de esperar que >> se quedara esperando a recibir una nueva entrada. >> >> Supongo que se podrá hacer mirando a fondo la arquitectura (twisted) >> de scrapy ... pero si alguno lo ha hecho antes :) >> >> >> >> Saludos, >> >> -- luismiguel (@lmorillas) >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ From davidmenhur en gmail.com Mon May 19 22:34:17 2014 From: davidmenhur en gmail.com (=?UTF-8?B?RGHPgGlk?=) Date: Mon, 19 May 2014 22:34:17 +0200 Subject: [Python-es] Scraping con scrapy. In-Reply-To: References: Message-ID: 2014-05-19 17:53 GMT+02:00 Luis Miguel Morillas : > Yo necesito que cada vez que se suministra una url, se vuelva a > parsear la página, porque la información es dinámica (precios de venta > o alquileres) > Te puedes morir de éxito. Puedes almacenar los datos en una base de datos local que vas renovando constantemente. Si guardas también la hora a la que se obtuvo, puedes lanzar una advertencia si los datos son muy viejos. De esta forma mantienes la carga sobre los servidores controlada, independiente del número de usuarios, y aún así, información fresca. Además, este sistema te permite guardar una cache en caso de que el servidor remoto falle o tarde mucho en responder. En el fondo, todo depende de cómo de grande sea tu lista de direcciones, cómo de frecuentes sean las actualizaciones y el grado de inmediatez necesario, pero ya rellenas tú los detalles. /David. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From tres.14159 en gmail.com Fri May 23 13:20:01 2014 From: tres.14159 en gmail.com (Miguel de Dios Matias) Date: Fri, 23 May 2014 13:20:01 +0200 Subject: [Python-es] =?utf-8?q?Presentaci=C3=B3n?= Message-ID: Buenas. Soy Miguel, salmantino que vive por trabajo y otras cosas en los madriles. Que trabaja en PHP, pero disfruta en Python ;) . Y nada vengo a la lista por recomendación de la gente de Python Madrid. Saludos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From tres.14159 en gmail.com Fri May 23 13:20:51 2014 From: tres.14159 en gmail.com (Miguel de Dios Matias) Date: Fri, 23 May 2014 13:20:51 +0200 Subject: [Python-es] =?utf-8?q?He_generado_un_paquete_Debian_de_una_librer?= =?utf-8?q?=C3=ADa=2C_funciona_pero_no_se_si_es_correcto?= Message-ID: Buenas. Estoy probando con una librería muy chula en python para hacer juegos roguelike (http://es.wikipedia.org/wiki/Roguelike) que se llama libtcod. Pero lamentablemente esta un poco abandonado el proyecto, pero otro hacker a empezado en github un repositorio de esta librería que funciona, pero solo genera el paquete para C. https://github.com/emillon/libtcod-debian Me liado la manta a la cabeza y he "forkeado" el proyecto y a base de cabezazos he conseguido que el paquete de las librería (no el dev) lleve el .py. https://github.com/mdtrooper/libtcod-debian Funciona, me fijado en como lo hace la librería Panda3D porque no tenia ni idea de como se hacia para meterlo en el path de python. Yo lo meto el fichero mágico (no se bien su significado pero me huelo): /usr/lib/python2.7/dist-packages/libtcodpy.pth Pero el debian/rules me lo pone en: /usr/share/pyshared/libtcodpy.pth ¿Esta bien lo que he hecho o mejor dicho es el camino estándar o es una ñapa muy cutre? Saludos. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From kikocorreoso en gmail.com Sat May 24 19:27:37 2014 From: kikocorreoso en gmail.com (Kiko) Date: Sat, 24 May 2014 19:27:37 +0200 Subject: [Python-es] =?utf-8?q?Presentaci=C3=B3n?= In-Reply-To: References: Message-ID: Uys, mala gente esos de Python Madrid... :-P Bienvenido y para lo que podamos ayudar aquí estamos. El 23 de mayo de 2014, 13:20, Miguel de Dios Matias escribió: > Buenas. > > Soy Miguel, salmantino que vive por trabajo y otras cosas en los madriles. > > Que trabaja en PHP, pero disfruta en Python ;) . > > Y nada vengo a la lista por recomendación de la gente de Python Madrid. > > Saludos. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From ricardo.cardenes en gmail.com Sat May 24 20:27:38 2014 From: ricardo.cardenes en gmail.com (=?UTF-8?Q?Ricardo_C=C3=A1rdenes?=) Date: Sat, 24 May 2014 19:27:38 +0100 Subject: [Python-es] =?utf-8?q?He_generado_un_paquete_Debian_de_una_librer?= =?utf-8?q?=C3=ADa=2C_funciona_pero_no_se_si_es_correcto?= In-Reply-To: References: Message-ID: Lo suyo sería que pusieses los módulos de Python en un paquete aparte (posiblemente "python-tcod"). De esa manera sólo se instalan los ".py" si hay necesidad. Sobre lo de dónde te pone dh_python (o similar) las cosas: depende. Lo normal es especificar en el debian/control qué versiones de Python soporta el código que estás empaquetando (ej: >= 2.5 o similar) y ya se encarga él de ponerte las cosas en el sitio adecuado. Luego al instalar el paquete se hacen enlaces desde los respectivos /usr/lib/python2.{5,6,7}/dist-packages y se compilan los .pyc adecuados. 2014-05-23 12:20 GMT+01:00 Miguel de Dios Matias : > Buenas. > > Estoy probando con una librería muy chula en python para hacer juegos > roguelike (http://es.wikipedia.org/wiki/Roguelike) que se llama libtcod. > > Pero lamentablemente esta un poco abandonado el proyecto, pero otro hacker a > empezado en github un repositorio de esta librería que funciona, pero solo > genera el paquete para C. > > https://github.com/emillon/libtcod-debian > > Me liado la manta a la cabeza y he "forkeado" el proyecto y a base de > cabezazos he conseguido que el paquete de las librería (no el dev) lleve el > .py. > > https://github.com/mdtrooper/libtcod-debian > > Funciona, me fijado en como lo hace la librería Panda3D porque no tenia ni > idea de como se hacia para meterlo en el path de python. > > Yo lo meto el fichero mágico (no se bien su significado pero me huelo): > > /usr/lib/python2.7/dist-packages/libtcodpy.pth > > Pero el debian/rules me lo pone en: > > /usr/share/pyshared/libtcodpy.pth > > ¿Esta bien lo que he hecho o mejor dicho es el camino estándar o es una ñapa > muy cutre? > > Saludos. > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > From tres.14159 en gmail.com Sat May 24 20:46:31 2014 From: tres.14159 en gmail.com (Miguel de Dios Matias) Date: Sat, 24 May 2014 20:46:31 +0200 Subject: [Python-es] =?utf-8?q?He_generado_un_paquete_Debian_de_una_librer?= =?utf-8?q?=C3=ADa=2C_funciona_pero_no_se_si_es_correcto?= In-Reply-To: References: Message-ID: Gracias pro la información. Voy a consultarle también al que lleva el repositorio del que forkee....habrá que hacerle la pelota para que coja los cambios ;) . Saludos. El 24 de mayo de 2014, 20:27, Ricardo Cárdenes escribió: > Lo suyo sería que pusieses los módulos de Python en un paquete aparte > (posiblemente "python-tcod"). De esa manera sólo se instalan los ".py" > si hay necesidad. > > Sobre lo de dónde te pone dh_python (o similar) las cosas: depende. Lo > normal es especificar en el debian/control qué versiones de Python > soporta el código que estás empaquetando (ej: >= 2.5 o similar) y ya > se encarga él de ponerte las cosas en el sitio adecuado. Luego al > instalar el paquete se hacen enlaces desde los respectivos > /usr/lib/python2.{5,6,7}/dist-packages y se compilan los .pyc > adecuados. > > 2014-05-23 12:20 GMT+01:00 Miguel de Dios Matias : > > Buenas. > > > > Estoy probando con una librería muy chula en python para hacer juegos > > roguelike (http://es.wikipedia.org/wiki/Roguelike) que se llama libtcod. > > > > Pero lamentablemente esta un poco abandonado el proyecto, pero otro > hacker a > > empezado en github un repositorio de esta librería que funciona, pero > solo > > genera el paquete para C. > > > > https://github.com/emillon/libtcod-debian > > > > Me liado la manta a la cabeza y he "forkeado" el proyecto y a base de > > cabezazos he conseguido que el paquete de las librería (no el dev) lleve > el > > .py. > > > > https://github.com/mdtrooper/libtcod-debian > > > > Funciona, me fijado en como lo hace la librería Panda3D porque no tenia > ni > > idea de como se hacia para meterlo en el path de python. > > > > Yo lo meto el fichero mágico (no se bien su significado pero me huelo): > > > > /usr/lib/python2.7/dist-packages/libtcodpy.pth > > > > Pero el debian/rules me lo pone en: > > > > /usr/share/pyshared/libtcodpy.pth > > > > ¿Esta bien lo que he hecho o mejor dicho es el camino estándar o es una > ñapa > > muy cutre? > > > > Saludos. > > > > _______________________________________________ > > Python-es mailing list > > Python-es en python.org > > https://mail.python.org/mailman/listinfo/python-es > > FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From sercuto en alumni.uv.es Thu May 29 18:06:58 2014 From: sercuto en alumni.uv.es (Sergio Cubero) Date: Thu, 29 May 2014 18:06:58 +0200 Subject: [Python-es] ayuda con popen script Message-ID: <53875B22.7020700@alumni.uv.es> Hola. Estoy haciendo un script que realiza dump de mysql y las guarda en una carpeta, para que estas copias no se acumule. Las borro cada 15 dias, el caso es que el script funciona aunque me da mensaje de "tuberia rota" en la linea del find con popen if file_count >= numero_ficheros: os.popen("%s %s -type f -mtime +14 | xargs rm -vf" % (PATH_FIND, dest_folder)) Soy nuevo en python y no veo donde está el error. Gracias por la ayuda From lastvnm en gmail.com Thu May 29 19:00:33 2014 From: lastvnm en gmail.com (Hiko hitokiri) Date: Thu, 29 May 2014 11:00:33 -0600 Subject: [Python-es] ayuda con popen script In-Reply-To: <53875B22.7020700@alumni.uv.es> References: <53875B22.7020700@alumni.uv.es> Message-ID: yo lo hago asi : lo de borrar por dias la verdad no lo he implementado por que no me a sido necesario pero no es mayor cosa generador_nombre_db = db + '-' +str(datetime.datetime.now().strftime('%m-%d-%Y-%I:%M:%S-%p-%Z')) + '.sql' args_dump = "mysqldump --user=%s --host=%s --password=%s %s > %s%s" % (datos_conexion.usuario, datos_conexion.host,datos_conexion.password, db, direccion, generador_nombre_db) proceso_backup = subprocess.Popen(args_dump, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) dump_output_backup, error_datos_backup = proceso_backup.communicate() ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From stvzito en gmail.com Thu May 29 19:03:47 2014 From: stvzito en gmail.com (Manuel A. Estevez Fernandez) Date: Thu, 29 May 2014 12:03:47 -0500 Subject: [Python-es] Analizar cadena y extraer valores Message-ID: Saludos a todos Tengo la siguiente necesidad: Extraer el texto de un archivo PDF (una factura), el cual lo resolví utilizando pyPdf, sin embargo el texto texto resultante de la lectura, es una sola linea de texto de la cual debo extraer. El patrón de la información siempre es el mismo: *COMMERCIAL INVOICESeller*[Datos]*Consignee*[Datos]*Notify Party*[Datos]*Departure Date:* [datos]*Delivery and Payment Term*[Datos]*Country of origin* [Datos]*Invoice No. & Date*[Datos]*PO no. & Date*[Datos]*Buyer Reference NO & Date*[Datos]*Buyer*[Datos]*Remarks*[Datos]*Other References*[Datos*]Goods description Model code Quantity Unit priceAmount*[descripcion] [Modelo] [Cantidad] [PrecioUnitario][Monto] *Total: *[Descripcion] [Cantidad] [Importe][Moneda][descripcion] [Modelo] [Cantidad] [PrecioUnitario][Monto] *Total: *[Descripcion] [Cantidad] [Importe][Moneda][descripcion] [Modelo] [Cantidad] [PrecioUnitario][Monto] *Total: *[Descripcion] [Cantidad] [Importe][Moneda]*/////////END OF DATA//////////////* Las que se encuentran en negritas son los tags que se repiten de forma fija. Sería de mucha ayuda si me pudieran indicar cuáles herramientas utilizar o algún método general para realizar este proceso. Gracias de antemano. by: ISC. Manuel Alejandro Estévez Fernández ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From nicolaslino1 en gmail.com Thu May 29 19:13:11 2014 From: nicolaslino1 en gmail.com (Nicolas lino) Date: Thu, 29 May 2014 14:13:11 -0300 Subject: [Python-es] ayuda con popen script In-Reply-To: References: <53875B22.7020700@alumni.uv.es> Message-ID: Mira, tuve varios dramas con os.popen tratando de hacer algunas cosas medias locas. La solucion que encontre fue usar commands: >>> import commands >>> a = 'find' >>> b = './' >>> commands.getoutput("%s %s -type f -mtime +1 | xargs rm -f" % (a,b)) Si te sirve aprobechalo! Saludos. 2014-05-29 14:00 GMT-03:00 Hiko hitokiri : > yo lo hago asi : lo de borrar por dias la verdad no lo he implementado por > que no me a sido necesario pero no es mayor cosa > > generador_nombre_db = db + '-' > +str(datetime.datetime.now().strftime('%m-%d-%Y-%I:%M:%S-%p-%Z')) + '.sql' > args_dump = "mysqldump --user=%s --host=%s > --password=%s %s > %s%s" % (datos_conexion.usuario, > > datos_conexion.host,datos_conexion.password, db, direccion, > generador_nombre_db) > proceso_backup = subprocess.Popen(args_dump, > stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) > dump_output_backup, error_datos_backup = > proceso_backup.communicate() > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From sercuto en alumni.uv.es Thu May 29 19:20:34 2014 From: sercuto en alumni.uv.es (Sergio Cubero) Date: Thu, 29 May 2014 19:20:34 +0200 Subject: [Python-es] ayuda con popen script In-Reply-To: References: <53875B22.7020700@alumni.uv.es> Message-ID: <53876C62.9080504@alumni.uv.es> Hola Nicolas. Muchas gracias lo acabo de probar y ha funcionado perfectamente. Investigaré un poco más sobre commads ya que me interesa mucho obtener el resultado del stout y sterror Gracias! El 29/05/2014 19:13, Nicolas lino escribió: > Mira, tuve varios dramas con os.popen tratando de hacer algunas cosas > medias locas. La solucion que encontre fue usar commands: > > >>> import commands > >>> a = 'find' > >>> b = './' > >>> commands.getoutput("%s %s -type f -mtime +1 | xargs rm -f" % (a,b)) > > > Si te sirve aprobechalo! > > Saludos. > > > 2014-05-29 14:00 GMT-03:00 Hiko hitokiri >: > > yo lo hago asi : lo de borrar por dias la verdad no lo he > implementado por que no me a sido necesario pero no es mayor cosa > > generador_nombre_db = db + '-' > +str(datetime.datetime.now().strftime('%m-%d-%Y-%I:%M:%S-%p-%Z')) > + '.sql' > args_dump = "mysqldump --user=%s --host=%s > --password=%s %s > %s%s" % (datos_conexion.usuario, > datos_conexion.host,datos_conexion.password, db, direccion, > generador_nombre_db) > proceso_backup = subprocess.Popen(args_dump, > stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) > dump_output_backup, error_datos_backup = > proceso_backup.communicate() > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From nicolaslino1 en gmail.com Thu May 29 19:23:49 2014 From: nicolaslino1 en gmail.com (Nicolas lino) Date: Thu, 29 May 2014 14:23:49 -0300 Subject: [Python-es] ayuda con popen script In-Reply-To: <53876C62.9080504@alumni.uv.es> References: <53875B22.7020700@alumni.uv.es> <53876C62.9080504@alumni.uv.es> Message-ID: Es muy sensillo y practico! De nada y saludos! El 29 de mayo de 2014, 14:20, Sergio Cubero escribió: > Hola Nicolas. > > Muchas gracias lo acabo de probar y ha funcionado perfectamente. > > Investigaré un poco más sobre commads ya que me interesa mucho obtener el > resultado del stout y sterror > > Gracias! > > > El 29/05/2014 19:13, Nicolas lino escribió: > > Mira, tuve varios dramas con os.popen tratando de hacer algunas cosas > medias locas. La solucion que encontre fue usar commands: > > >>> import commands > >>> a = 'find' > >>> b = './' > >>> commands.getoutput("%s %s -type f -mtime +1 | xargs rm -f" % (a,b)) > > > Si te sirve aprobechalo! > > Saludos. > > > 2014-05-29 14:00 GMT-03:00 Hiko hitokiri : > >> yo lo hago asi : lo de borrar por dias la verdad no lo he implementado >> por que no me a sido necesario pero no es mayor cosa >> >> generador_nombre_db = db + '-' >> +str(datetime.datetime.now().strftime('%m-%d-%Y-%I:%M:%S-%p-%Z')) + '.sql' >> args_dump = "mysqldump --user=%s --host=%s >> --password=%s %s > %s%s" % (datos_conexion.usuario, >> >> datos_conexion.host,datos_conexion.password, db, direccion, >> generador_nombre_db) >> proceso_backup = subprocess.Popen(args_dump, >> stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) >> dump_output_backup, error_datos_backup = >> proceso_backup.communicate() >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > _______________________________________________ > Python-es mailing listPython-es en python.orghttps://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From sercuto en alumni.uv.es Thu May 29 19:24:53 2014 From: sercuto en alumni.uv.es (Sergio Cubero) Date: Thu, 29 May 2014 19:24:53 +0200 Subject: [Python-es] ayuda con popen script In-Reply-To: References: <53875B22.7020700@alumni.uv.es> Message-ID: <53876D65.1030703@alumni.uv.es> Muchas gracias, pero el script de copia ya lo tengo. El problema solo era en el borrado pero ya lo he solucionado con la opción de Nicolas usando commands. Saludos. El 29/05/2014 19:00, Hiko hitokiri escribió: > yo lo hago asi : lo de borrar por dias la verdad no lo he implementado > por que no me a sido necesario pero no es mayor cosa > > generador_nombre_db = db + '-' > +str(datetime.datetime.now().strftime('%m-%d-%Y-%I:%M:%S-%p-%Z')) + '.sql' > args_dump = "mysqldump --user=%s --host=%s > --password=%s %s > %s%s" % (datos_conexion.usuario, > datos_conexion.host,datos_conexion.password, db, direccion, > generador_nombre_db) > proceso_backup = subprocess.Popen(args_dump, > stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) > dump_output_backup, error_datos_backup = > proceso_backup.communicate() > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcaballero.hep en gmail.com Thu May 29 19:37:48 2014 From: jcaballero.hep en gmail.com (Jose Caballero) Date: Thu, 29 May 2014 13:37:48 -0400 Subject: [Python-es] Analizar cadena y extraer valores In-Reply-To: References: Message-ID: > > Extraer el texto de un archivo PDF (una factura), el cual lo resolví > utilizando pyPdf, sin embargo el texto texto resultante de la lectura, es > una sola linea de texto de la cual debo extraer. yo entender no. From stvzito en gmail.com Thu May 29 19:56:30 2014 From: stvzito en gmail.com (Manuel A. Estevez Fernandez) Date: Thu, 29 May 2014 12:56:30 -0500 Subject: [Python-es] Analizar cadena y extraer valores In-Reply-To: References: Message-ID: Hola jose Mira del texto tengo que extraer los valores "Seller" ,"Notify Party" ,"Departure Date" ,"Delivery and Payment Term" ,"Country of origin" ,"Invoice No. & Date" ,"PO no. & Date" ,"Buyer Reference NO & Date" ,"Buyer" ,"Remarks" ,"Other References" los cuales vendrían a ser el encabezado del documento. adjunto una imagen de la estructura del documento para explicarlo un poco mejor. Ademas debo extraer los valores que se encuentran en el detalle del documento ( un pdf ). "Goods description" ,"Model code" ,"Quantity" ,"Unit price" ,"Amount" Saludos.? factura.png ? by: ISC. Manuel Alejandro Estévez Fernández El 29 de mayo de 2014, 12:37, Jose Caballero escribió: > > > > Extraer el texto de un archivo PDF (una factura), el cual lo resolví > > utilizando pyPdf, sin embargo el texto texto resultante de la lectura, es > > una sola linea de texto de la cual debo extraer. > > > yo entender no. > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From nicolaslino1 en gmail.com Thu May 29 19:59:22 2014 From: nicolaslino1 en gmail.com (Nicolas lino) Date: Thu, 29 May 2014 14:59:22 -0300 Subject: [Python-es] Analizar cadena y extraer valores In-Reply-To: References: Message-ID: yo tampoco :P El 29 de mayo de 2014, 14:37, Jose Caballero escribió: > > > > Extraer el texto de un archivo PDF (una factura), el cual lo resolví > > utilizando pyPdf, sin embargo el texto texto resultante de la lectura, es > > una sola linea de texto de la cual debo extraer. > > > yo entender no. > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Thu May 29 21:28:09 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Thu, 29 May 2014 21:28:09 +0200 Subject: [Python-es] Analizar cadena y extraer valores In-Reply-To: References: Message-ID: El 29 de mayo de 2014, 19:03, Manuel A. Estevez Fernandez escribió: > Saludos a todos > > Tengo la siguiente necesidad: > > Extraer el texto de un archivo PDF (una factura), el cual lo resolví > utilizando pyPdf, sin embargo el texto texto resultante de la lectura, es > una sola linea de texto de la cual debo extraer. > El patrón de la información siempre es el mismo: > > *COMMERCIAL INVOICESeller*[Datos]*Consignee*[Datos]*Notify Party*[Datos]*Departure > Date:* [datos]*Delivery and Payment Term*[Datos]*Country of origin* > [Datos]*Invoice No. & Date*[Datos]*PO no. & Date*[Datos]*Buyer Reference > NO & Date*[Datos]*Buyer*[Datos]*Remarks*[Datos]*Other References*[Datos*]Goods > description Model code > Quantity Unit priceAmount*[descripcion] > [Modelo] [Cantidad] [PrecioUnitario][Monto] *Total: > *[Descripcion] [Cantidad] > [Importe][Moneda][descripcion] [Modelo] > [Cantidad] [PrecioUnitario][Monto] *Total: *[Descripcion] > [Cantidad] [Importe][Moneda][descripcion] > [Modelo] [Cantidad] [PrecioUnitario][Monto] > *Total: *[Descripcion] [Cantidad] > [Importe][Moneda]*/////////END OF DATA//////////////* > > Las que se encuentran en negritas son los tags que se repiten de forma > fija. > > Sería de mucha ayuda si me pudieran indicar cuáles herramientas utilizar o > algún método general para realizar este proceso. > Lo que necesitas no sencillo. Según la variedad de facturas, necesitarás muchas horas de prueba/error hasta lograr un proceso depurado que te extraiga la información limpia. Yo empezaria con el módulo re (expresiones regulares) e intentaría dividir el problema en partes. Algo muy sencillo para obtener todo el texto delimitado por TAGs sería: import re pat = re.compile("TAG1(.*?)TAG2(.*?)//////END OF DATA////") data = pat.findall(texto) > > Gracias de antemano. > > by: > > ISC. Manuel Alejandro Estévez Fernández > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From stvzito en gmail.com Fri May 30 00:23:22 2014 From: stvzito en gmail.com (Manuel A. Estevez Fernandez) Date: Thu, 29 May 2014 17:23:22 -0500 Subject: [Python-es] Analizar cadena y extraer valores In-Reply-To: References: Message-ID: Gracias por el aporte Chema. Estoy empezando a echarle una leída al modulo re, de momento se ocurrio algo tal vez sencillo y poco elegante para la primera parte de la factura: _texto.split('Other References')[1].split('Goods description')[0] E ir sacando la información entre "TAGS". Aún no comienzo a pensar como extraer, la parte del detalle, ya que el único tag que encuentro recurrente es Total: y cuando hay un salto de pagina me encuentro lo siguiente: - Continue -_________________________ Signed by Page No. # of # Inv No. [#######] Comenzaré con el proceso de Prueba y Error. Saludos. by: ISC. Manuel Alejandro Estévez Fernández El 29 de mayo de 2014, 14:28, Chema Cortes escribió: > > > > El 29 de mayo de 2014, 19:03, Manuel A. Estevez Fernandez < > stvzito en gmail.com> escribió: > > Saludos a todos >> >> Tengo la siguiente necesidad: >> >> Extraer el texto de un archivo PDF (una factura), el cual lo resolví >> utilizando pyPdf, sin embargo el texto texto resultante de la lectura, es >> una sola linea de texto de la cual debo extraer. >> El patrón de la información siempre es el mismo: >> >> *COMMERCIAL INVOICESeller*[Datos]*Consignee*[Datos]*Notify Party*[Datos]*Departure >> Date:* [datos]*Delivery and Payment Term*[Datos]*Country of >> origin*[Datos]*Invoice No. & Date*[Datos]*PO no. & Date*[Datos]*Buyer >> Reference NO & Date*[Datos]*Buyer*[Datos]*Remarks*[Datos]*Other >> References*[Datos*]Goods description Model code >> Quantity Unit priceAmount*[descripcion] >> [Modelo] [Cantidad] >> [PrecioUnitario][Monto] *Total: *[Descripcion] >> [Cantidad] [Importe][Moneda][descripcion] [Modelo] >> [Cantidad] [PrecioUnitario][Monto] *Total: *[Descripcion] >> [Cantidad] [Importe][Moneda][descripcion] >> [Modelo] [Cantidad] [PrecioUnitario][Monto] >> *Total: *[Descripcion] [Cantidad] >> [Importe][Moneda]*/////////END OF DATA//////////////* >> >> Las que se encuentran en negritas son los tags que se repiten de forma >> fija. >> >> Sería de mucha ayuda si me pudieran indicar cuáles herramientas utilizar >> o algún método general para realizar este proceso. >> > > Lo que necesitas no sencillo. Según la variedad de facturas, necesitarás > muchas horas de prueba/error hasta lograr un proceso depurado que te > extraiga la información limpia. > > Yo empezaria con el módulo re (expresiones regulares) e intentaría dividir > el problema en partes. > > Algo muy sencillo para obtener todo el texto delimitado por TAGs sería: > > import re > pat = re.compile("TAG1(.*?)TAG2(.*?)//////END OF DATA////") > > data = pat.findall(texto) > > > > >> >> Gracias de antemano. >> >> by: >> >> ISC. Manuel Alejandro Estévez Fernández >> >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": > http://ch3m4.org/blog > Buscador Python Hispano: http://ch3m4.org/python-es > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pych3m4 en gmail.com Fri May 30 02:45:12 2014 From: pych3m4 en gmail.com (Chema Cortes) Date: Fri, 30 May 2014 02:45:12 +0200 Subject: [Python-es] Analizar cadena y extraer valores In-Reply-To: References: Message-ID: El 30 de mayo de 2014, 0:23, Manuel A. Estevez Fernandez escribió: > Gracias por el aporte Chema. > > Estoy empezando a echarle una leída al modulo re, de momento se ocurrio > algo tal vez sencillo y poco elegante para la primera parte de la factura: > > _texto.split('Other References')[1].split('Goods description')[0] > > E ir sacando la información entre "TAGS". > > Aún no comienzo a pensar como extraer, la parte del detalle, ya que el > único tag que encuentro recurrente es Total: y cuando hay un salto de > pagina me encuentro lo siguiente: > > - Continue -_________________________ Signed by Page No. # of # Inv > No. [#######] > Seguramente sólo se usan unos pocos tipos de monedas en las facturas, por lo que puedes usar ése campo para separar las líneas de detalle: pat_detalle = re.compile("(.*?Total:.*?\d+(USD|Euros)") En cuanto a los saltos de página, si son así puedes suponer que empiezan por "- Continue" y acaban por "\d+\]" para poder ignorarlos en las búsquedas: pat_remove = re.compile("- Continue -.*?\d+\]") texto_limpio = pat_remove.sub("", texto) Tendrás que probar cuál es el patrón RE que mejor funciona. > > > Comenzaré con el proceso de Prueba y Error. > > Saludos. > > > by: > > ISC. Manuel Alejandro Estévez Fernández > > > > El 29 de mayo de 2014, 14:28, Chema Cortes escribió: > > >> >> >> El 29 de mayo de 2014, 19:03, Manuel A. Estevez Fernandez < >> stvzito en gmail.com> escribió: >> >> Saludos a todos >>> >>> Tengo la siguiente necesidad: >>> >>> Extraer el texto de un archivo PDF (una factura), el cual lo resolví >>> utilizando pyPdf, sin embargo el texto texto resultante de la lectura, es >>> una sola linea de texto de la cual debo extraer. >>> El patrón de la información siempre es el mismo: >>> >>> *COMMERCIAL INVOICESeller*[Datos]*Consignee*[Datos]*Notify Party*[Datos]*Departure >>> Date:* [datos]*Delivery and Payment Term*[Datos]*Country of >>> origin*[Datos]*Invoice No. & Date*[Datos]*PO no. & Date*[Datos]*Buyer >>> Reference NO & Date*[Datos]*Buyer*[Datos]*Remarks*[Datos]*Other >>> References*[Datos*]Goods description Model code >>> Quantity Unit priceAmount*[descripcion] >>> [Modelo] [Cantidad] >>> [PrecioUnitario][Monto] *Total: *[Descripcion] >>> [Cantidad] [Importe][Moneda][descripcion] [Modelo] >>> [Cantidad] [PrecioUnitario][Monto] *Total: *[Descripcion] >>> [Cantidad] [Importe][Moneda][descripcion] >>> [Modelo] [Cantidad] [PrecioUnitario][Monto] >>> *Total: *[Descripcion] [Cantidad] >>> [Importe][Moneda]*/////////END OF DATA//////////////* >>> >>> Las que se encuentran en negritas son los tags que se repiten de forma >>> fija. >>> >>> Sería de mucha ayuda si me pudieran indicar cuáles herramientas utilizar >>> o algún método general para realizar este proceso. >>> >> >> Lo que necesitas no sencillo. Según la variedad de facturas, necesitarás >> muchas horas de prueba/error hasta lograr un proceso depurado que te >> extraiga la información limpia. >> >> Yo empezaria con el módulo re (expresiones regulares) e intentaría >> dividir el problema en partes. >> >> Algo muy sencillo para obtener todo el texto delimitado por TAGs sería: >> >> import re >> pat = re.compile("TAG1(.*?)TAG2(.*?)//////END OF DATA////") >> >> data = pat.findall(texto) >> >> >> >> >>> >>> Gracias de antemano. >>> >>> by: >>> >>> ISC. Manuel Alejandro Estévez Fernández >>> >>> >>> _______________________________________________ >>> Python-es mailing list >>> Python-es en python.org >>> https://mail.python.org/mailman/listinfo/python-es >>> FAQ: http://python-es-faq.wikidot.com/ >>> >>> >> >> >> -- >> Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": >> http://ch3m4.org/blog >> Buscador Python Hispano: http://ch3m4.org/python-es >> >> _______________________________________________ >> Python-es mailing list >> Python-es en python.org >> https://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: