<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Robotipy]]></title><description><![CDATA[Tecnología, Automatización e Inteligencia Artificial]]></description><link>https://newsletter.robotipy.com</link><image><url>https://substackcdn.com/image/fetch/$s_!zrIg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe330d00c-4cfe-4e9b-ba4c-234b2f73e719_1280x1280.png</url><title>Robotipy</title><link>https://newsletter.robotipy.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 17 May 2026 11:11:52 GMT</lastBuildDate><atom:link href="https://newsletter.robotipy.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Danilo Toro 🤖🐍]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[danilo@robotipy.com]]></webMaster><itunes:owner><itunes:email><![CDATA[danilo@robotipy.com]]></itunes:email><itunes:name><![CDATA[Danilo Toro 🤖🐍]]></itunes:name></itunes:owner><itunes:author><![CDATA[Danilo Toro 🤖🐍]]></itunes:author><googleplay:owner><![CDATA[danilo@robotipy.com]]></googleplay:owner><googleplay:email><![CDATA[danilo@robotipy.com]]></googleplay:email><googleplay:author><![CDATA[Danilo Toro 🤖🐍]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Automatizar ya no es un diferencial. Ahora es un estándar]]></title><description><![CDATA[Lunes de Bots & Bytes &#8212; Edici&#243;n #07]]></description><link>https://newsletter.robotipy.com/p/no-automatizar-es-mas-caro-que-si</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/no-automatizar-es-mas-caro-que-si</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 06 Apr 2026 11:03:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9mHK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; Danilo&#128075; Bienvenidos nuevamente a <strong>Lunes de Bots &amp; Bytes</strong> &#129302;</p><p>Si te interesa leer de esto, te invito a suscribirte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Hace poco m&#225;s de una semana organizamos un desayuno con empresas en conjunto con <strong><a href="https://rocketbot.com">Rocketbot</a></strong><a href="https://rocketbot.com"> </a>en Santiago. </p><p>Y m&#225;s all&#225; de mostrar los servicios que tenemos en <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Robotipy&quot;,&quot;id&quot;:1374548,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/danilotoro&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e330d00c-4cfe-4e9b-ba4c-234b2f73e719_1280x1280.png&quot;,&quot;uuid&quot;:&quot;76450d39-21a7-4e79-8de4-49442eeb2477&quot;}" data-component-name="MentionToDOM"></span>, quise tratar un tema que a mi parecer, pocas empresas est&#225;n viendo.</p><p>De todos los asistentes, todos ya hab&#237;an usado IA de alguna forma. Algunos conoc&#237;an incluso RPA de forma &#8220;cl&#225;sica&#8221;. Pero no todos ten&#237;an claro lo que cambi&#243; estos &#250;ltimos a&#241;os.</p><blockquote><p>Automatizar procesos dej&#243; de ser un diferencial. Ahora es el est&#225;ndar en cualquier industria</p></blockquote><p>Hace un par de a&#241;os, que las empresas automaticen sus procesos, era sin&#243;nimo de innovaci&#243;n, digitalizaci&#243;n y te ayudaba a sacar ventaja frente a tus competidores.</p><p>Hoy con la llegada de los <a href="https://en.wikipedia.org/wiki/Large_language_model">LLMs</a>, la barrera de entrada baj&#243; tanto, que lo que <strong>NO</strong> se puede automatizar, ahora es casi nulo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9mHK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9mHK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 424w, https://substackcdn.com/image/fetch/$s_!9mHK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 848w, https://substackcdn.com/image/fetch/$s_!9mHK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 1272w, https://substackcdn.com/image/fetch/$s_!9mHK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9mHK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png" width="2268" height="1709" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1709,&quot;width&quot;:2268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5179369,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.robotipy.com/i/193167109?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe995c7c0-8f60-450e-a883-673a660c8b7a_2268x4032.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9mHK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 424w, https://substackcdn.com/image/fetch/$s_!9mHK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 848w, https://substackcdn.com/image/fetch/$s_!9mHK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 1272w, https://substackcdn.com/image/fetch/$s_!9mHK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9923eff1-d865-42d1-b0ef-9e8d778c9229_2268x1709.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Antes, las automatizaciones se ca&#237;an por ser caras, fr&#225;giles o directamente inviables. Hoy los bots pueden adaptarse a cambios en documentos, interpretar im&#225;genes y hasta responder preguntas en lenguaje natural.</p><p>Lo que antes costaba meses, ahora se resuelve en semanas, y lo que antes fallaba cada dos semanas, ahora se mantiene casi solo.</p><p>Pero no solo es un tema t&#233;cnico, tambi&#233;n tenemos el tema regulatorio. En chile, adem&#225;s se juntan 3 leyes que este 2026 empujan en la misma direcci&#243;n.</p><ul><li><p>Ley de 40 horas &#8212; Ahora en abril, pasamos de 44 a 42 horas semanales la jornada de trabajo. Esto significa que el costo por hora sube autom&#225;ticamente.</p></li><li><p>Ley de Ciberseguridad &#8212; Ya est&#225; vigente y nos exige implementar sistemas de gesti&#243;n de seguridad, cumplir tiempos de reportabilidad y cumplir con monitoreo. La &#250;nica forma de cumplir es automatizando</p></li><li><p>Ley de protecci&#243;n de datos &#8212; Entra en vigencia en diciembre de este a&#241;o. Toda empresa que maneje datos personales tiene que poder demostrar como los usa, almacena y protege. </p></li></ul><p>Y esto no es solo Chile. En todo Latinoam&#233;rica la tendencia es la misma. Colombia tiene su ley de protecci&#243;n de datos, Argentina est&#225; actualizando la suya.</p><p>Esto es algo que muchos no est&#225;n viendo. Ya no se trata de si es recomendable automatizar. El contexto nos empuja a hacerlo y la tecnolog&#237;a ya lo permite.</p><p>Por eso, cada proceso que hacemos manual, aparte de tiempo mal aprovechado, es plata que estamos perdiendo.</p><p>Si trabajas en automatizaci&#243;n, te toca aprender a implementar inteligencia a tus proyectos.</p><p>Y si est&#225;s a cargo de un equipo o una operaci&#243;n, toca preguntarte cu&#225;nto te est&#225; costando seguir haciendo las cosas como siempre</p><div><hr></div><p>Y eso es todo por hoy! Si encontraste valor en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver m&#225;s sobre los beneficios dando clic ac&#225;:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran semana! &#128640;</p><p>Danilo</p>]]></content:encoded></item><item><title><![CDATA[AI es el nuevo Excel]]></title><description><![CDATA[Lunes de Bots & Bytes &#8212; Edici&#243;n #06]]></description><link>https://newsletter.robotipy.com/p/ai-es-el-nuevo-excel</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/ai-es-el-nuevo-excel</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 08 Dec 2025 16:26:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NL13!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; Danilo&#128075; Bienvenidos nuevamente a un Lunes de Bots &amp; Bytes &#129302;</p><p>Un espacio donde comienzo los lunes enviandote un email con una idea breve de lo que haya aprendido o charlado durante la &#250;ltima semana acerca de Automatizaci&#243;n y Tecnolog&#237;a.</p><p>Si te interesa leer de esto, te invito a suscribirte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>En el mundo del <strong>Venture Capital</strong>, hay un concepto llamado &#8220;Unbundling of Excel&#8221;, que significa que, en los &#250;ltimos 15 a&#241;os, muchas startups han tomado soluciones que se hac&#237;an en Excel y la han convertido en Software.</p><p>Las presentaciones eran:</p><blockquote><p>Muchas empresas usan planillas de excel como esta, nosotros hemos tomado esta funcionalidad, la hemos convertido en un SaaS y cobraremos entre 30 y 300 dolares al mes por usarla</p></blockquote><p>Al ser <strong>Excel</strong> una herramienta de prop&#243;sito general, ha sido la navaja suiza en la mayor&#237;a de las empresas, repitiendo el mismo ciclo:</p><p>Empresas peque&#241;as gestionan todo con excel (clientes, proyectos, facturas, etc.) a costo casi cero, la empresa escala y se hace ineficiente (problemas de colaboraci&#243;n, de versionado, etc), se contrata un SaaS especifico con una UX bonita y mejores funciones que solo usar excel</p><p>As&#237; han nacido muchos casos</p><ul><li><p><strong>Salesforce / Hubspot</strong> &#8212; Excel para gestionar clientes</p></li><li><p><strong>Jira / Trello / Monday</strong> &#8212; Excel para gestionar proyectos</p></li><li><p><strong>Deel / Buk</strong> &#8212; Excel para recursos humanos</p></li><li><p><strong>Netsuite / SAP / Odoo</strong> &#8212; Excel para gestionar inventarios</p></li></ul><p>Ahora con la Inteligencia Artificial, estamos volviendo a hacer todo por nosotros mismos. </p><p>Podemos construir nuestras herramientas, personalizar nuestro software, como en este post de reddit</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NL13!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NL13!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NL13!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NL13!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NL13!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NL13!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg" width="1179" height="1469" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1469,&quot;width&quot;:1179,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!NL13!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NL13!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NL13!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NL13!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa85aa257-f078-4ce5-82e8-bcb054236195_1179x1469.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>AI</strong> nos est&#225; permitiendo hacer lo mismo que excel. </p><p>Si excel permiti&#243; que un contador pueda crear su propio sistema de finanzas, <strong>AI</strong> permite que se pueda crear tu propio software y flujos automatizados.</p><p>Y no es solo en software, los <strong>LLMs</strong> son la nueva navaja suiza, donde pareciera que podemos hacer todo desde el chat y no tener que pagar 30 suscripciones para 30 casos diferentes (Algunos hablan de &#8220;La muerte del Saas&#8221;,  pero hablemos a detalle en otro post).</p><p>No tengo una opini&#243;n tan clara de si es bueno que volvamos a centralizar. Habr&#237;a que investigar si el costo de mantener y construir es menor a largo plazo que contratar un software. Aunque tambi&#233;n creo que no es solo un tema de dinero.</p><p>En mi caso, llevo m&#225;s de 8 a&#241;os programando y estoy adopando el <a href="https://x.com/karpathy/status/1886192184808149383?s=20">vibecoding</a> con fuerza. Cambiando Notion y Jira por soluciones que me han tomado 1 semana construir, cuando antes demoraba meses.</p><p>Cuando digo que <strong>AI es el nuevo excel</strong>, quiero decir que la barrera para resolver nuestros problemas cae a cero, y nuevamente, solo necesitamos entender nuestro negocio o problema para resolverlo (y obvio, saber conversar con <strong>AI</strong>)</p><div><hr></div><p>Y este es el post de hoy! Revivimos nuestro newsletter y si encuentras valor aqui, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago y podras agendar reuniones semanales conmigo, para asesorias de automatizaci&#243;n y/o software</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran semana! &#128640;</p><p>Danilo</p><p></p>]]></content:encoded></item><item><title><![CDATA[¿Que pasó con Robotipy?]]></title><description><![CDATA[Hey, por ac&#225; Danilo &#128075; Ha pasado casi un a&#241;o desde el &#250;ltimo post.]]></description><link>https://newsletter.robotipy.com/p/que-paso-con-robotipy</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/que-paso-con-robotipy</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 03 Nov 2025 10:02:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/759f311b-f90e-456c-828b-0212fa755fa1_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, por ac&#225; Danilo &#128075; Ha pasado casi un a&#241;o desde el &#250;ltimo post. </p><p>Si sigues este blog, quizas te preguntaste, qu&#233; pas&#243; con Robotipy? Se acab&#243;?</p><p>La respuesta corta es: </p><blockquote><p><strong>&#128119;Renunci&#233; a Rocketbot, fund&#233; un Software Factory y empezamos a escribir menos e hicimos m&#225;s</strong></p></blockquote><p></p><p>En los &#250;ltimos meses, dejamos de ser solo un blog para transformarnos en una f&#225;brica de software completa. </p><p>Nos metimos de lleno en hacer RPA, nos enfrentamos a problemas reales de nuestros clientes y, sinceramente, estuvimos trabajando sin parar.</p><p>Cada art&#237;culo que escribimos sobre buenas pr&#225;cticas, sobre c&#243;mo estructurar un proyecto o c&#243;mo estimarlos, dej&#243; de ser teor&#237;a y se volvi&#243; nuestro d&#237;a a d&#237;a. </p><p>Aplicamos nuestros propios consejos a una escala mucho mayor, y eso consumi&#243; todo nuestro tiempo y energ&#237;a.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;334bf1d7-2e6c-483a-98ee-a09495d5cc10&quot;,&quot;caption&quot;:&quot;Hola, por ac&#225; Danilo&#128075; Bienvenidos nuevamente a un Lunes de Bots &amp; Bytes &#129302;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Pasos para automatizar un proceso &#8212; De la idea a la entrega&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2024-10-07T11:01:11.019Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Ziby!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/pasos-para-automatizar-un-proceso&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:149522017,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:4,&quot;comment_count&quot;:2,&quot;publication_id&quot;:1374548,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!zrIg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe330d00c-4cfe-4e9b-ba4c-234b2f73e719_1280x1280.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h3>Volvemos? </h3><p>Quiero hacerlo. Tenemos muchos articulos pendientes y conversaciones sin editar, pero tambi&#233;n queremos escribir de otros temas. Las reglas en tecnolog&#237;a han cambiado. </p><p>Automatizaci&#243;n ya no es solo RPA. Escribir sin mencionar la <strong>Inteligencia Artificial, los LLMs y vibe coding,</strong> es escribir en la prehistoria.</p><p>Hemos constru&#237;do much&#237;simo, soluciones complejas que nos han dado una mirada mucho m&#225;s amplia. </p><p>Entendimos que el RPA es una parte fundamental, pero no es el puzle completo.</p><p>Volvemos porque la conversaci&#243;n se ha vuelto m&#225;s interesante, m&#225;s divertida y m&#225;s necesaria que nunca. </p><p>Despu&#233;s de todo este tiempo construyendo, hay mucho que compartir</p><h3>Que se viene?: IA, C&#243;digo y Automatizaci&#243;n Inteligente</h3><p>El blog evolucionar&#225; un poco.</p><p>Seguiremos hablando de RPA, porque sigue siendo nuestro ADN. Pero vamos a ampliar el espectro para incluir los temas que hoy nos definen:</p><ul><li><p><strong>Inteligencia Artificial y LLMs &#8212; </strong>Estoy metido en esto cada d&#237;a, me gustar&#237;a compartir noticias, herramientas &#250;tiles y como integrarlos a nuestras automatizaciones</p></li><li><p><strong>Desarrollo de Software &#8212; </strong>Estoy facinado con el vibecoding y quiero compartir como cambi&#233; mi flujo de programaci&#243;n para hacer en 2 lo que me tomaba 10.</p></li><li><p><strong>Estrategia y Emprendimiento T&#233;cnico &#8212;</strong> Ahora soy emprendedor y hay un mont&#243;n de cosas que no se aprenden hasta que estamos metidos hasta el fondo. Quiero compartirlas, s&#233; que muchos quieren tener su propia empresa.</p></li></ul><p>El esp&#237;ritu del blog ser&#225; el mismo: contenido pr&#225;ctico y nacido de la experiencia real. </p><div><hr></div><p>Y eso es todo por ahora.</p><p>Estamos de vuelta, con m&#225;s ganas que nunca de retomar. No semanal, pero si m&#225;s seguido. </p><p><strong>Te interesa el cambio o prefieres que seamos 100% RPA? </strong></p><p>D&#233;jame un comentario o responde a este correo. Tu feedback me ayudar&#225; much&#237;simo.</p><p>Ten una gran semana,</p><p>Danilo</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Robotipy es una publicaci&#243;n financiada por sus lectores. Para recibir nuevas publicaciones y apoyar mi trabajo, considera hacerte suscriptor gratuito o de pago..</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Code-versaciones #5 - Eric Vasquez]]></title><description><![CDATA[Listen now | Conversamos acerca de como era automatizar en los inicios del RPA en Latam, como es la cultura de las empresas, como actuar frente al cliente y como estar constantemente actualizado]]></description><link>https://newsletter.robotipy.com/p/code-versaciones-5-eric-vasquez</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/code-versaciones-5-eric-vasquez</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Fri, 03 Jan 2025 12:29:44 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/153985727/dbd296e8766cdbae93020dabe8790f39.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p>]]></content:encoded></item><item><title><![CDATA[Pasos para automatizar un proceso — De la idea a la entrega]]></title><description><![CDATA[Lunes de Bots & Bytes &#8212; Edici&#243;n #05]]></description><link>https://newsletter.robotipy.com/p/pasos-para-automatizar-un-proceso</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/pasos-para-automatizar-un-proceso</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 07 Oct 2024 11:01:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ziby!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; Danilo&#128075; Bienvenidos nuevamente a un Lunes de Bots &amp; Bytes &#129302;</p><p>Un espacio donde comienzo los lunes enviandote un email con una idea breve de lo que haya aprendido o charlado durante la &#250;ltima semana acerca de Automatizaci&#243;n y Tecnolog&#237;a.</p><p>Si te interesa leer acerca de automatizaci&#243;n y tecnolog&#237;a, te invito a suscribirte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Es muy com&#250;n que el ritmo en los proyectos en tecnolog&#237;a vengan acompa&#241;ados de urgencia y presi&#243;n para terminar todo &#8220;para ayer&#8221;. Bajo este contexto, muchas veces caemos en la trampa de comenzar a desarrollar lo m&#225;s r&#225;pido posible, sin una buena planificaci&#243;n.</p><p>En los &#250;ltimos meses, he tenido que intervenir en varios desarrollos de RPA, porque han sido mal estructurados o porque el desarrollador se ha ido sin terminar el proyecto.</p><p>Sea cual sea el caso, el problema es el mismo. <strong>Se inici&#243; el desarrollo sin planificaci&#243;n y no se dej&#243; una buena documentaci&#243;n.</strong></p><p></p><blockquote><p>Los proyectos no son est&#225;ticos, los proyectos van evolucionando</p></blockquote><p></p><p>Lo que se ve en los requisitos o en los levantamientos iniciales, no siempre es lo que ser&#225; el resultado final. </p><p>Por eso, tomarse unos d&#237;as para estructurar correctamente el c&#243;digo desde el inicio es important&#237;simo. De esta forma, si ocurre alg&#250;n problema o cambio de requisitos, podemos adaptarnos sin que el proyecto sea un desastre.</p><p>Es f&#225;cil comenzar con las mejores intenciones y terminar con un monstruo de Frankenstein.</p><p>Esta es la metodolog&#237;a que hemos adoptado en Robotipy.</p><h3>Etapa 1: Levantamiento inicial con el usuario</h3><p>El levantamiento inicial es la reuni&#243;n donde se muestra el paso a paso de como se realiza la tarea a automatizar y se explica el por qu&#233; de lo que se realiza.</p><p>El desarrollador TIENE que entender el por qu&#233; se realiza cada paso. En el desarrollo habr&#225; que quitar, agregar o modificar pasos para entregar una automatizaci&#243;n eficiente y si el desarrollador no entiende lo que hace el usuario, se apegar&#225; a replicar paso a paso el camino feliz</p><blockquote><p>&#9888;&#65039;Si has intervenido menos de 5 veces en un levantamiento, lo hiciste mal</p><p>Indaga en el proceso, haz las preguntas tontas. Mientras m&#225;s espec&#237;fico seas en la etapa inicial, menos problemas tendr&#225;s despu&#233;s.</p></blockquote><p>En esta primera etapa es importante que asistan al menos dos personas a la reuni&#243;n:</p><ol><li><p>Quien realiza la tarea cada d&#237;a</p></li><li><p>Alguien con experiencia en automatizaci&#243;n</p></li></ol><p>No se imaginan cuantos desarrollos comienzan con una explicaci&#243;n vaga de alguien que no realiza la tarea o son levantados por alguien que no sabe como funciona un robot.</p><blockquote><p>&#128161;No olvides grabar la reuni&#243;n. Siempre ten un registro de lo que se pidi&#243;.</p></blockquote><h3>Etapa 2: Planificaci&#243;n</h3><p>Ya teniendo claro el proceso, lo siguiente es la planificaci&#243;n de lo que se har&#225; en el ciclo de vida del proyecto.</p><p>Esta etapa la podemos dividir en 2 subetapas: <strong>diagramar y estimar.</strong></p><h4>Diagramar</h4><p>Diagramar te permite tener un mapa claro de todos los pasos que debes seguir; evitar que vuelvas a ver el video todo el tiempo y algo muy importante: Alinearte con el usuario.</p><p>Luego del levantamiento, el usuario cree que explic&#243; todo y/o tu le entendiste, t&#250; crees que te explic&#243; todo y/o le entendiste. En medio del desarrollo, se dan cuenta que nunca fue as&#237;.</p><p>Por eso es importante que tu diagrama sea lo m&#225;s detallado posible. Es mejor tener un diagrama as&#237; &#128521;&#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ziby!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ziby!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ziby!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ziby!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ziby!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ziby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg" width="1456" height="569" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:569,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:984703,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ziby!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ziby!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ziby!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ziby!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d9c59d2-0eb7-4297-9b7a-5640ff53f60a_11192x4377.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Que tener uno as&#237; &#129320;&#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LW3B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LW3B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LW3B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LW3B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LW3B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LW3B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:689075,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LW3B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LW3B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LW3B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LW3B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F732dab30-2760-43cc-a454-7ef0aefa1d94_11070x4426.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>La diferencia entre ambos es obvia. En la primera, puedes comunicar f&#225;cilmente si entendiste el flujo y el usuario podr&#225; aprobarlo con confianza. </p><p>En el segundo diagrama, el usuario no sabr&#225; si realmente lo que entendiste como &#8220;Descargar fichero&#8221; es lo que realmente se debe hacer. </p><p>Por &#250;ltimo, un diagrama detallado te protege ante los cambios. &#191;Que ocurre si en alg&#250;n momento la p&#225;gina cambia? Tienes el diagrama con los pasos aprobados por el cliente y no queda solo en un &#8220;Descargar archivo&#8221;.</p><h4>Estimar</h4><p>Con el diagrama listo, lo siguiente es estimar cuanto tiempo nos tomar&#225; desarrollar el proceso.</p><p>Esta parte no es sencilla, est&#225;n involucrados varios factores, y por eso me hice una f&#243;rmula para calcular en cuantos d&#237;as estar&#225; un desarrollo.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;40f7f3b3-d1db-429d-9fef-f0f5020e4657&quot;,&quot;caption&quot;:&quot;Hola, por ac&#225; Danilo&#128075; Bienvenido a Lunes de Bots &amp; Bytes &#129302;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Consideraciones al estimar tiempos de desarrollo&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-10-30T18:42:44.300Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cc4000c-ff9b-4866-a7d5-9e1abda0992b_800x800.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/consideraciones-al-estimar-tiempos&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:138416442,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39352271-e735-455a-a1ec-81a723dd3fc0_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Lo importante ac&#225; es encontrar todos los factores que estar&#225;n involucrados. Cuantos desarrolladores, reuniones semanales, d&#237;as para paso a producci&#243;n, documentaci&#243;n, tiempo de investigaci&#243;n, etc.</p><p>Por eso es importante la etapa anterior, al ver el detalle de cada paso, puedes entender como realizar cada parte. &#191;Existe un componente, una API, librer&#237;a? Todo esto afecta el tiempo de desarrollo.</p><p>Anota todo en un diagrama o tabla &#8212; ahora si con menos detalle &#8212; que te sirva como registro de avance. As&#237; puedes ver r&#225;pidamente si vas atrasado o no con el desarrollo</p><h3>Etapa 3: Desarrollo</h3><p>Si el usuario ya te di&#243; el OK con los pasos anteriores, toca ponerse manos a la obra.</p><p>Dependiendo del lenguaje o la herramienta que uses para automatizar, puedes tener un framework que te haga m&#225;s facil estructurar el desarrollo. </p><p>Lo importante ac&#225; es seguir siempre la misma estructura para tener coherencia entre tus proyectos y as&#237; sea m&#225;s f&#225;cil modificar el robot.</p><p>En alg&#250;n momento ahondaremos diferentes formas de estructurar un robot, pero a mi me gusta resumirlo en 3 niveles: Iniciar, procesar, terminar.</p><ul><li><p>&#9654;&#65039;Iniciar: Creamos funciones que agrupen toda la l&#243;gica que necesita el robot para iniciar &#8212; Descargar archivos iniciales, crear variables globales, conectar con servicios, crear carpetas, etc.</p></li><li><p>&#128499;Procesar: Funciones con toda la l&#243;gica core del proceso &#8212; Si han desarrollado con UIPath, podriamos agrupar el Get Transaction y el Process Transaction aqu&#237;</p></li><li><p>&#128721;Terminar: Funciones con todo para terminar el proceso &#8212; Cerrar las aplicaciones abiertas, enviar los correos de notificaci&#243;n, eliminar archivos temporales, etc.</p></li></ul><blockquote><p>&#128161;Recuerda dividir estos 3 niveles en funciones o subprocesos m&#225;s peque&#241;os para mantener un c&#243;digo limpio y escalable.</p></blockquote><p>Cada una de estas tres etapas deben incluir logs que te permitan saber en que parte del flujo est&#225;s, que fila/documento/dato est&#225;s procesando e informaci&#243;n que pueda ser &#250;til al momento de debugear.</p><p>En esta parte te puede ayudar usar patrones o principios de dise&#241;o. Hace un a&#241;o escrib&#237; como poder aplicar SOLID en RPA &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;5dee65c1-d11f-48f0-863c-b7469ade46f4&quot;,&quot;caption&quot;:&quot;Hola, por ac&#225; Danilo&#128075;Bienvenido a esta nueva secci&#243;n de Robotipy llamada Lunes de Bots &amp; Bytes &#129302;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Principios SOLID aplicados a la construcci&#243;n de robots &#129302;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-10-02T12:30:31.192Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/principios-solid-aplicados-a-la-construccion&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:137472473,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39352271-e735-455a-a1ec-81a723dd3fc0_512x512.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h3>Etapa 4: Documentaci&#243;n y Entrega</h3><p>Esta &#250;ltima etapa es igual de importante que el desarrollo y es la menos valorada. Dir&#237;a incluso olvidada.</p><p>La documentaci&#243;n no solo ayuda al cliente, sino a todos los desarrolladores que interactuar&#225;n con el robot a futuro</p><blockquote><p>&#129504; La memoria es fr&#225;gil y siempre se cumplir&#225; la ley: Desarrollo entregado, desarrollo olvidado. <br>Se bueno documentando y ser&#225;s un buen desarrollador</p></blockquote><p>Esto es lo que deber&#237;as incluir en tu documento:</p><ul><li><p>Descripci&#243;n &#8212; Una descripci&#243;n del proceso,  con el prop&#243;sito y que valor aporta.</p></li><li><p>Flujo del proceso &#8212; El documento final tiene que incluir el flujo aprobado por el usuario, adem&#225;s de los pasos detallados realizados por el robot. <br>Esto te proteger&#225; ante errores por cambios</p></li><li><p>Estimaci&#243;n realizada &#8212; Esto ayudar&#225; al usuario a entender los tiempos de entrega y cualquier posible variaci&#243;n en el cronograma</p></li><li><p>Estructura de archivos &#8212; Explica como se organizan las carpetas y archivos que necesita el proceso, como logs, scripts, modulos, ejecutables. No saben cuantos proyectos fallan porque el TI borra archivos porque s&#237;.</p></li><li><p>Como ejecutar el robot &#8212; Instrucciones de los pasos que se tienen que seguir para ejecutar el robot. Ejecutables, orquestadores, etc.</p></li><li><p>Limitantes &#8212; Ac&#225; debes colocar cualquier limitaci&#243;n que tenga el proceso automatizado. Por ejemplo, necesitar una interfaz gr&#225;fica</p></li><li><p>Responsables &#8212; Incluye un listado de las personas involucradas en el proceso. Los desarrolladores, PMs y usuarios. </p></li><li><p>Registro de cambios &#8212; Historial de las actualizaciones que se realizan en el robot. Incluye versiones y una descripci&#243;n de por qu&#233; y qu&#233; fue modificado</p></li></ul><p>Si te fijas, estos pasos pueden ir realizandose desde el inicio del proyecto. No necesitas esperar para el paso final, pero si debes dedicar un tiempo al finalizar el desarrollo para redactar una buena documentaci&#243;n.</p><h3></h3><p>Existen desarrollos que pueden durar meses, y cada uno de estos pasos involucra subtareas igual de importante que iremos abordando m&#225;s adelante.</p><p>Trata de encontrar tu forma de trabajar que te permita entragar un desarrollo de calidad y a la vez te permita tener una estructura similar.</p><div><hr></div><p>Y eso es todo por hoy! Si encontraste valor en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver m&#225;s sobre los beneficios dando clic ac&#225;:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran semana! &#128640;</p><p>Danilo</p><p></p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Code-versaciones #4 - Ivan Lasso]]></title><description><![CDATA[Listen now | Que es un BPMS, como se integra con RPA y hackaton de automatizaci&#243;n]]></description><link>https://newsletter.robotipy.com/p/code-versaciones-4-ivan-lasso</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/code-versaciones-4-ivan-lasso</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Wed, 28 Aug 2024 15:01:54 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/148210417/82f8001785e4803fb261925e5d8cf258.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p>]]></content:encoded></item><item><title><![CDATA[Code-versaciones #3 - Mariela Britos]]></title><description><![CDATA[Listen now | Conversamos de su carrera y su salto de desarrolladora a Business Analyst, Como ha sido su experiencia migrando Robots entre diferentes plataformas y como hace para mantenerse actualizada]]></description><link>https://newsletter.robotipy.com/p/code-versaciones-3-mariela-britos</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/code-versaciones-3-mariela-britos</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 04 Mar 2024 14:30:26 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/142283260/91da67cff689cf7b930ae8ba7e49c531.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p>]]></content:encoded></item><item><title><![CDATA[Code-versaciones #2 - Danna Holguín]]></title><description><![CDATA[Listen now | Conversamos de como es cambiar de carrera profesional, principales conocimiento que debe tener un desarrollador, diferencias entre herramientas, como mantenerse actualizado y los roles en RPA]]></description><link>https://newsletter.robotipy.com/p/code-versaciones-2-danna-holguin</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/code-versaciones-2-danna-holguin</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Wed, 14 Feb 2024 14:30:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/141657771/f0412a67f13e76665a1f719f59cd5586.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p>]]></content:encoded></item><item><title><![CDATA[SSD en la Automatización Robótica de Procesos]]></title><description><![CDATA[Resumen del contenido y aspectos clave en la creaci&#243;n del SDD.]]></description><link>https://newsletter.robotipy.com/p/ssd-en-la-automatizacion-robotica</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/ssd-en-la-automatizacion-robotica</guid><dc:creator><![CDATA[Mariela Britos]]></dc:creator><pubDate>Tue, 06 Feb 2024 13:30:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!D5pX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola! por ac&#225; Mariela &#128075;</p><p>Bienvenid@! En el post anterior en mi blog personal <a href="https://marielaalejandrabritos.substack.com/">RPA 360</a> proporcion&#233; una breve descripci&#243;n del SDD y sus contenidos. En esta ocasi&#243;n, profundizar&#233; en los detalles del documento.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Robotipy is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Este post es una colaboraci&#243;n con el blog de Mariela Britos. Si quieres recibir estas publicaciones desde tu correo electr&#243;nico, te invito a suscribirte a mi blog.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://marielaalejandrabritos.substack.com/&quot;,&quot;text&quot;:&quot;Suscribete&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://marielaalejandrabritos.substack.com/"><span>Suscribete</span></a></p><div><hr></div><p>En la automatizaci&#243;n de procesos con RPA, la documentaci&#243;n es esencial, y el dise&#241;o de soluciones (SDD), no es una excepci&#243;n; es responsabilidad del desarrollador lograrlo. Despu&#233;s de completar el PDD, el desarrollador debe comprender el proceso y proponer soluciones con un flujo y dise&#241;o &#243;ptimos, respaldados por diagramas claros. </p><h4>&#128194;Utilidad del Documento de Soluci&#243;n en Automatizaci&#243;n RPA </h4><p>El Documento de Soluci&#243;n se redacta de manera accesible para que todos lo comprendan f&#225;cilmente, centr&#225;ndose en el estado futuro del proceso (To Be). </p><p>Esta documentaci&#243;n beneficia tanto a desarrolladores como a clientes, proporcionando una comprensi&#243;n clara de la soluci&#243;n. Adem&#225;s, si en el futuro otro desarrollador asume el proceso, tambi&#233;n se ver&#225; beneficiado por este documento.</p><p>El SSD suele ser preparado por el desarrollador para un proceso espec&#237;fico, abarcando enfoques de soluci&#243;n, tales como:</p><ul><li><p>El flujo futuro.</p></li><li><p>Diagramas de flujo l&#243;gico.</p></li><li><p>M&#233;todos de interacci&#243;n del bot &#8212; grabaciones de pantalla, clics en teclas, botones, men&#250;s desplegables, etc. </p></li><li><p>Capturas de pantalla del proceso en ejecuci&#243;n. </p></li><li><p>Estrategias de manejo de errores y excepciones. </p></li><li><p>Aplicaciones involucradas en el proceso.</p></li><li><p>C&#243;mo se construir&#225; el bot de acuerdo con las reglas comerciales.</p></li><li><p>Otros aspectos.</p></li></ul><p>Se trata de un archivo de Word que incluye una p&#225;gina de inicio con un &#237;ndice y el logotipo de la empresa.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D5pX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D5pX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D5pX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D5pX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D5pX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D5pX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg" width="1414" height="2000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2000,&quot;width&quot;:1414,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:335811,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D5pX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!D5pX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!D5pX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!D5pX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e524dfa-9dc7-424e-8700-7717814a5704_1414x2000.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Estos pasos ayudan a garantizar que el SDD sea completo, comprensible y sirva como una gu&#237;a efectiva para el desarrollo y la implementaci&#243;n del proceso automatizado.</p><p><strong>Dos pasos importantes que no debes olvidar</strong></p><ol><li><p><strong>Revisi&#243;n y Aprobaci&#243;n </strong>&#128269;: Antes de la implementaci&#243;n, aseg&#250;rate de que el SDD sea revisado y aprobado por los stakeholders y miembros clave del equipo. </p></li><li><p><strong>Actualizaci&#243;n Continua </strong>&#128187;<strong>:</strong> Mant&#233;n el SDD actualizado a medida que el proyecto avanza, reflejando cualquier cambio o ajuste realizado durante el desarrollo y la implementaci&#243;n.</p></li></ol><h4>&#191;Cu&#225;ndo se debe crear o entregar un SDD? &#191;Antes o despu&#233;s del desarrollo?</h4><p>La creaci&#243;n y entrega del Documento de Dise&#241;o de Soluci&#243;n (SDD) generalmente ocurre antes del desarrollo real de la soluci&#243;n en el contexto de proyectos de desarrollo de software, incluyendo la automatizaci&#243;n de procesos con RPA (Automatizaci&#243;n Rob&#243;tica de Procesos).</p><p>Aunque en algunos casos se entrega despu&#233;s del desarrollo, porque se le adjunta el manual de usuario.</p><p>A veces, incluir el manual de usuario en el SDD ayuda a complementarlo, ya que permite una revisi&#243;n m&#225;s detallada y evita que se pasen por alto aspectos importantes del proceso desarrollado. Es recomendable utilizar versiones y llevar un registro de los cambios aplicados para asegurar que el SDD permanezca actualizado con la &#250;ltima versi&#243;n.</p><div><hr></div><p>En resumen, en el &#225;mbito de la RPA, documentar pr&#225;cticamente todo se percibe como una bendici&#243;n m&#225;s que como una maldici&#243;n. La creaci&#243;n de PDD y SDD en RPA no solo busca lograr la automatizaci&#243;n inmediata, sino tambi&#233;n asegurar el acceso a informaci&#243;n y conocimientos cruciales. De este modo, la documentaci&#243;n se vuelve f&#225;cilmente accesible para futuros desarrolladores y usuarios.</p><div><hr></div><h4>&#127760;&#129302; &#161;&#218;nete a la Comunidad de RPA en Espa&#241;ol! &#128640;&#128483;&#65039; &#161;Conecta, comparte y aprende juntos! &#127775;</h4><p>&#127760; &#161;Aqu&#237; tienes la invitaci&#243;n a nuestra comunidad de Robotipy! Suscribete a este newsletter y &#250;nete a nosotros para compartir conocimientos, hacer preguntas y aprender juntos sobre RPA y la automatizaci&#243;n.</p><p>&#161;Esperamos contar con tu participaci&#243;n! &#129302;&#129309;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://chat.whatsapp.com/EpNtClcTDdwHux32Nyp3D0&quot;,&quot;text&quot;:&quot;Comunidad Robotipy&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://chat.whatsapp.com/EpNtClcTDdwHux32Nyp3D0"><span>Comunidad Robotipy</span></a></p><div><hr></div><p><em>Si encontraste valor en este bolet&#237;n, considera compartirlo con tu equipo.</em></p><p>Que tengas una linda semana! &#128640;</p><p>Mariela.B</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/p/ssd-en-la-automatizacion-robotica?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/p/ssd-en-la-automatizacion-robotica?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Robotipy is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Manejo de variables en Rocketbot]]></title><description><![CDATA[Guia pr&#225;ctica para entender el manejo de variables en Rocketbot]]></description><link>https://newsletter.robotipy.com/p/manejo-de-variables-en-rocketbot</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/manejo-de-variables-en-rocketbot</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Fri, 02 Feb 2024 11:02:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39352271-e735-455a-a1ec-81a723dd3fc0_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Uno de los top 5 errores que comete un desarrollador al construir un robot, est&#225; relacionado con el manejo de las variables. </p><p>Si bien la forma de trabajar es muy similar a Python y para algunos puede ser sencillo. Es importante entender algunas caracter&#237;sticas para que puedas desarrollar con mayor fluidez.</p><p>Aqu&#237; te muestro alguno de los errores que posiblemente ya has visto y que explicar&#233; mas adelante.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wfMz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wfMz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 424w, https://substackcdn.com/image/fetch/$s_!wfMz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 848w, https://substackcdn.com/image/fetch/$s_!wfMz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 1272w, https://substackcdn.com/image/fetch/$s_!wfMz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wfMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png" width="728" height="416.3065585851142" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:776,&quot;width&quot;:1357,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:49356,&quot;alt&quot;:&quot;Imagen con errores relacionados a mal manejo de variables&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Imagen con errores relacionados a mal manejo de variables" title="Imagen con errores relacionados a mal manejo de variables" srcset="https://substackcdn.com/image/fetch/$s_!wfMz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 424w, https://substackcdn.com/image/fetch/$s_!wfMz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 848w, https://substackcdn.com/image/fetch/$s_!wfMz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 1272w, https://substackcdn.com/image/fetch/$s_!wfMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F373713e6-4e3f-4d31-b354-e9cc2dbc52ba_1357x776.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>&#127760;Comunidad de RPA en Espa&#241;ol</h3><p>Si te interesa estar conectado con otros profesionales del mundo del RPA, te invito a unirte a nuestra comunidad en Whatsapp &#128071;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://chat.whatsapp.com/EpNtClcTDdwHux32Nyp3D0&quot;,&quot;text&quot;:&quot;Comunidad Robotipy&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://chat.whatsapp.com/EpNtClcTDdwHux32Nyp3D0"><span>Comunidad Robotipy</span></a></p><div><hr></div><h2>&#129300;Supuestos </h2><p>En este post asumir&#233; que ya conoces algunas temas b&#225;sicps de Rocketbot para no tener que extenderme tanto con las explicaciones, asumir&#233; que sabes acerca de:</p><ul><li><p>Sintaxis para uso y asignaci&#243;n de variables</p></li><li><p>Creaci&#243;n de variables en Rocketbot</p></li><li><p>Algo de conocimiento en Python</p></li></ul><h2>&#127744;Tipos de variables</h2><p>Las variables de Rocketbot no necesitan asignarse con un tipo de variable est&#225;tico como otras herramientas o lenguajes de programaci&#243;n. </p><p>Si bien Rocketbot clasifica sus variables como General, Password, File, Folder, Array y Encrypt, esto no afecta al funcionamiento o manejo de la variable en los comandos, ya que esta clasificaci&#243;n es solamente visual para el ambiente de desarrollo.</p><p>Por otro lado, en los comandos de Rocketbot podemos utilizar 8 tipos de variables que vienen del lenguaje Python, y estas son:</p><ul><li><p>int &#8212; N&#250;meros enteros</p></li><li><p>float &#8212; N&#250;meros decimales</p></li><li><p>bool &#8212; Tipo de dato l&#243;gico (True o False)</p></li><li><p>list &#8212; Estructura de datos ordenados o Array</p></li><li><p>dict &#8212; Estrucutura de datos desordenados o Array asociativos</p></li><li><p>set &#8212; Colecci&#243;n de datos desordenados con valores no duplicados</p></li><li><p>tuple &#8212; Secuencia de datos inmutables</p></li></ul><blockquote><p>&#128279; Para m&#225;s detalle, puedes ver la doc de python aqu&#237; &#128073;<a href="https://docs.python.org/3/tutorial/datastructures.html">Data Structures</a></p></blockquote><p>Puede ser que ya lo notaste, pero no inclu&#237; los string. Esto es porque en Rocketbot, no puedes utilizar una variable como string directamente, a menos que lo fuerces agregando alg&#250;n tipo de comillas <code>"{variable}" o '{string}'</code></p><h2>Comandos con python vs comados sin python</h2><p>Para poder entender como manejar las variables en Rocketbot, tienes que diferenciar los comandos que evaluan su contenido ejecutando python y los que no lo hacen.</p><p>Los comandos que no eval&#250;an sus inputs con python (que son la mayor&#237;a de los comandos), reciben el contenido ingresado de forma literal. De esta forma no necesitas indicar si es un string o no, ya que no interesa el tipo de dato, sino el valor ingresado.</p><p>Por este motivo, en la mayor&#237;a de los comandos no puedes ingresar informaci&#243;n como <code>{list}[0], </code>siendo list= [1,2,3,4]. Ya que, en lugar de recibir el primer elemento de tu lista (el 1), recibir&#225; literalmente <code>[1,2,3,4][0]</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!STfO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!STfO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 424w, https://substackcdn.com/image/fetch/$s_!STfO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 848w, https://substackcdn.com/image/fetch/$s_!STfO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 1272w, https://substackcdn.com/image/fetch/$s_!STfO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!STfO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png" width="407" height="176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:176,&quot;width&quot;:407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8921,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!STfO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 424w, https://substackcdn.com/image/fetch/$s_!STfO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 848w, https://substackcdn.com/image/fetch/$s_!STfO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 1272w, https://substackcdn.com/image/fetch/$s_!STfO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9283b353-5bab-456b-832f-5740f52bc6e6_407x176.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Comando Alert no ejecuta python, por lo tanto no eval&#250;a la sintaxis para extraer el primer elemento de una lista</figcaption></figure></div><blockquote><p>&#9888;&#65039; En los input de comando sin python, NUNCA debes agregar comillas a tu variable, a menos que el comando indique lo contrario</p></blockquote><p>Los comandos que s&#237; eval&#250;an python deben ser tratados de forma diferente. De estos tipos de comandos solo existen, por ahora, solo cuatro:</p><ul><li><p>Asignar variable (setvar) &#8212; Comando para asignar un valor a la variable que le indiques</p></li><li><p>IF (evaluateIf) &#8212; Bloque de comandos para tomar decisiones l&#243;gicas</p></li><li><p>While (evaluatewhile) &#8212; Bloque de comandos para ejecutar un bucle</p></li><li><p>For (for) &#8212; Bloque de comandos para iterar una variable o dato</p></li></ul><p>Cada uno de estos comandos, eval&#250;an directamente en Python el contenido que reciben, por lo que, si ingresas  <code>{list}[0] </code>no recibe literalmente <code>[1,2,3,4][0]</code> como en el caso anterior, sino que ahora si recibir&#225; un 1.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qpBt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qpBt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 424w, https://substackcdn.com/image/fetch/$s_!qpBt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 848w, https://substackcdn.com/image/fetch/$s_!qpBt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 1272w, https://substackcdn.com/image/fetch/$s_!qpBt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qpBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png" width="594" height="267" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:594,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14168,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qpBt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 424w, https://substackcdn.com/image/fetch/$s_!qpBt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 848w, https://substackcdn.com/image/fetch/$s_!qpBt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 1272w, https://substackcdn.com/image/fetch/$s_!qpBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3100c1ea-86c0-4876-9c48-502371b4c8ff_594x267.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">El comando if eval&#250;a python, por lo tanto puedo usarlo para extraer el primer elemento y comprar con el n&#250;mero 1</figcaption></figure></div><p>Como estos tipos de comandos eval&#250;an en python, para nuestras variables de tipo texto (Ej. mensaje = Hola mundo), necesitamos indicar que son un string, ya que al intentar evaluar <code>{mensaje}</code>, interpretar&#225; dos variables diferentes, <code>Hola </code>y  <code>mundo</code>, generando un error.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-NTt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-NTt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 424w, https://substackcdn.com/image/fetch/$s_!-NTt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 848w, https://substackcdn.com/image/fetch/$s_!-NTt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 1272w, https://substackcdn.com/image/fetch/$s_!-NTt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-NTt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png" width="453" height="161" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:161,&quot;width&quot;:453,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6972,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-NTt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 424w, https://substackcdn.com/image/fetch/$s_!-NTt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 848w, https://substackcdn.com/image/fetch/$s_!-NTt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 1272w, https://substackcdn.com/image/fetch/$s_!-NTt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f1b40f8-903c-443a-a1ac-138be44b030f_453x161.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">El comando asignar variable evalua las variables con python, por lo tanto, al recibir mensaje (Hola Mundo) sin comillas, genera un error de sintaxis</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HvQW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HvQW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 424w, https://substackcdn.com/image/fetch/$s_!HvQW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 848w, https://substackcdn.com/image/fetch/$s_!HvQW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 1272w, https://substackcdn.com/image/fetch/$s_!HvQW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HvQW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png" width="398" height="163" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:163,&quot;width&quot;:398,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7520,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HvQW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 424w, https://substackcdn.com/image/fetch/$s_!HvQW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 848w, https://substackcdn.com/image/fetch/$s_!HvQW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 1272w, https://substackcdn.com/image/fetch/$s_!HvQW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b9c8870-49ad-4255-95db-2fcba44cde3c_398x163.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Al usar comillas, el comando entiende que es un string y por lo tanto, lo evalua correctamente</figcaption></figure></div><p>Adem&#225;s de los comandos mencionados, por supuesto tambi&#233;n puedes usar "Ejecutar archivo python" y &#8220;Ejecutar script python&#8221; para crear tu propio c&#243;digo. </p><p>Para este tipo de comando el funcionamiento es el mismo, tienes que agregar comillas a las variables de tipo string solamente</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZyLA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZyLA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 424w, https://substackcdn.com/image/fetch/$s_!ZyLA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 848w, https://substackcdn.com/image/fetch/$s_!ZyLA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 1272w, https://substackcdn.com/image/fetch/$s_!ZyLA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZyLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png" width="282" height="177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:177,&quot;width&quot;:282,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6327,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZyLA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 424w, https://substackcdn.com/image/fetch/$s_!ZyLA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 848w, https://substackcdn.com/image/fetch/$s_!ZyLA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 1272w, https://substackcdn.com/image/fetch/$s_!ZyLA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944a9712-f917-4980-8377-ca5dcfc2b383_282x177.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Uso de variables de Rocketbot en c&#243;digo python</figcaption></figure></div><blockquote><p>&#9888;&#65039; Algunos utilizan la funci&#243;n de Rocketbot <code>GetVar()</code> para obtener el valor de una variable en su script python. Este m&#233;todo no lo recomiendo, ya que te devuelve todos tus valores como un string y tendr&#225;s que transformarlos nuevamente al tipo de dato original</p></blockquote><h3>Variables y funciones nativas de python</h3><p>Los comandos que eval&#250;an su condici&#243;n en python, tienen la ventaja que puedes usar variables y funciones nativas de Python. Veamos algunas &#250;tiles:</p><ul><li><p>range &#8212; Funci&#243;n para generar un rango de n&#250;meros. Es &#250;til para usarlo en un for e iterar por una cantidad fija. Ej. <code>range(4) </code>&#8594;<code> [0,1,2,3]</code></p></li><li><p>print &#8212; Funci&#243;n para imprimir en consola cualquier mensaje o variable. &#218;til para debugear en desarrollo cuando necesitamos saber el estado de una variable. Ej. <code>print({list})</code></p></li><li><p>max y min &#8212; Funciones para retornar el elemento mayor y menor de un iterable. Es &#250;til para c&#225;lculos. Ej. <code>max({list})</code>&#8594;<code> 4; min({list}) </code>&#8594;<code> 1</code></p></li><li><p>round &#8212; Funci&#243;n para redondear un n&#250;mero. Ej <code>round(2.675, 2) </code>&#8594;<code> 2.67</code></p></li></ul><h2>Casos particulares</h2><p>Si bien Rocketbot est&#225; constru&#237;do sobre Python, no todo el funcionamiento es igual a este lenguaje, ya que existe una interpretaci&#243;n propia antes de ejecutar el comando.</p><h4>Condiciones en el bloque IF</h4><p>En python, todo lo que coloquemos en un if se interpreta como un bool, de esta forma, no necesitamos colocar algo que sea estricamente True o False, podemos usar otro tipo de condiciones.</p><p>Las condiciones que python interpreta como False, aunque no lo sean literalmente, son: None, datos vac&#237;os <code>("", [], {}, ())</code> y 0. Para los casos contrarios a estos, Python los interpreta como True. Por ejemplo, si hacemos if <code>[1,2,3,4]</code>, para Python esto ser&#225; True (porque no es [] &#8594; False).</p><p>En Rocketbot esto no ocurre, el bloque IF debe recibir una condici&#243;n que al evualuar sea True, sino ejecutar&#225; las instrucciones del else</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OL3I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OL3I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 424w, https://substackcdn.com/image/fetch/$s_!OL3I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 848w, https://substackcdn.com/image/fetch/$s_!OL3I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 1272w, https://substackcdn.com/image/fetch/$s_!OL3I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OL3I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png" width="395" height="103" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:103,&quot;width&quot;:395,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4857,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OL3I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 424w, https://substackcdn.com/image/fetch/$s_!OL3I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 848w, https://substackcdn.com/image/fetch/$s_!OL3I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 1272w, https://substackcdn.com/image/fetch/$s_!OL3I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F544667b6-ee28-49c9-afb0-600fddaf72aa_395x103.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">La variable {list} es una lista de n&#250;meros y al evaluar, el resultado es <code>[1,2,3,4]</code>. Como no es un True, se ejecuta el bloque else</figcaption></figure></div><h4>Iterables en el bloque FOR</h4><p>Similar al caso anterior, en python podemos utilizar cualquier variable iterable para recorrer en un for. Podemos usar list, dict, tuple, set, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Cq9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Cq9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 424w, https://substackcdn.com/image/fetch/$s_!9Cq9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 848w, https://substackcdn.com/image/fetch/$s_!9Cq9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 1272w, https://substackcdn.com/image/fetch/$s_!9Cq9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Cq9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png" width="308" height="144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:144,&quot;width&quot;:308,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4685,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Cq9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 424w, https://substackcdn.com/image/fetch/$s_!9Cq9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 848w, https://substackcdn.com/image/fetch/$s_!9Cq9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 1272w, https://substackcdn.com/image/fetch/$s_!9Cq9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff11e1ff3-2c35-42cb-be9e-2b5081a6194e_308x144.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">El m&#233;todo items de un dict nos permite tener en una tupla, la clave y el valor de un diccionario</figcaption></figure></div><p>Esto no ocurre en el bloque For de Rocketbot, ya que, aunque algunas estructuras de datos permiten iterarse, no todas son "suscriptable", lo que significa que no puedes llamar sus elementos por &#237;ndice.</p><p>Como el comando itera utilizando un contador "count", al momento de iterar un dict_items, nos dar&#225; un error</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PY1U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PY1U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 424w, https://substackcdn.com/image/fetch/$s_!PY1U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 848w, https://substackcdn.com/image/fetch/$s_!PY1U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 1272w, https://substackcdn.com/image/fetch/$s_!PY1U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PY1U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png" width="471" height="242" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e923b287-1108-4544-9184-08a5d03c3021_471x242.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:242,&quot;width&quot;:471,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12186,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PY1U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 424w, https://substackcdn.com/image/fetch/$s_!PY1U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 848w, https://substackcdn.com/image/fetch/$s_!PY1U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 1272w, https://substackcdn.com/image/fetch/$s_!PY1U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe923b287-1108-4544-9184-08a5d03c3021_471x242.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><code>dict_items </code>no permite extraer datos por &#237;ndice</figcaption></figure></div><p>Para solucionar esto, podemos convertir la estructura en una lista usando la funci&#243;n <code>list()</code></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kdRr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kdRr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 424w, https://substackcdn.com/image/fetch/$s_!kdRr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 848w, https://substackcdn.com/image/fetch/$s_!kdRr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 1272w, https://substackcdn.com/image/fetch/$s_!kdRr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kdRr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png" width="607" height="104" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:104,&quot;width&quot;:607,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6434,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kdRr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 424w, https://substackcdn.com/image/fetch/$s_!kdRr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 848w, https://substackcdn.com/image/fetch/$s_!kdRr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 1272w, https://substackcdn.com/image/fetch/$s_!kdRr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb80ac01-e801-40f1-a9cd-d6edf9c5abd9_607x104.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Al envolver <code>{dict}.items() </code>en la funci&#243;n list, ahora si podemos iterarlo sin errores</figcaption></figure></div><h4>Mutabilidad de datos</h4><p>En la programaci&#243;n existe el concepto de mutabilidad, que es la capacidad de una variable o dato de cambiar su estado. </p><p>En python, tenemos datos mutables como: list o dict, y tenemos datos no mutables como str, tuple, set.</p><p>La mutabilidad la podemos observar bien en una lista cuando utilizamos, por ejemplo, el m&#233;todo append(). Este m&#233;todo cambia el estado de la lista, agregando un elemento extra.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t1ji!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t1ji!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 424w, https://substackcdn.com/image/fetch/$s_!t1ji!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 848w, https://substackcdn.com/image/fetch/$s_!t1ji!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 1272w, https://substackcdn.com/image/fetch/$s_!t1ji!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t1ji!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png" width="262" height="98" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:98,&quot;width&quot;:262,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3655,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t1ji!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 424w, https://substackcdn.com/image/fetch/$s_!t1ji!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 848w, https://substackcdn.com/image/fetch/$s_!t1ji!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 1272w, https://substackcdn.com/image/fetch/$s_!t1ji!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b4612b-06e2-4c04-9391-e8884388b4c8_262x98.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Al hacer un append(3) ahora la lista tiene un n&#250;mero m&#225;s, siendo la misma lista, tiene un estado diferente.</figcaption></figure></div><p>Por otro lado, un string no es mutable, no podemos cambiar su estado sin crear una variable nueva. Si usamos el m&#233;todo replace y luego consultamos el string nuevamente, la variable sigue teniendo el mismo valor </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R0_Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R0_Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 424w, https://substackcdn.com/image/fetch/$s_!R0_Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 848w, https://substackcdn.com/image/fetch/$s_!R0_Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 1272w, https://substackcdn.com/image/fetch/$s_!R0_Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R0_Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png" width="278" height="113" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:113,&quot;width&quot;:278,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3996,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R0_Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 424w, https://substackcdn.com/image/fetch/$s_!R0_Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 848w, https://substackcdn.com/image/fetch/$s_!R0_Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 1272w, https://substackcdn.com/image/fetch/$s_!R0_Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bd80ad9-ee4f-4f29-88b3-4f3c3448524f_278x113.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>En Rocketbot, todas las variables son inmutables. Esto quiere decir que no podemos cambiar su estado. Al ser las variables inmutables, solamente podemos "pisar" la variable con otro valor.</p><p>Es importate saber esto porque todos los m&#233;todos que mutan una variable, no los puedes utilizar en tus comandos de Rocketbot y tendr&#225;s que usar una alternativa</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-Vg2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Vg2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 424w, https://substackcdn.com/image/fetch/$s_!-Vg2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 848w, https://substackcdn.com/image/fetch/$s_!-Vg2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 1272w, https://substackcdn.com/image/fetch/$s_!-Vg2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Vg2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png" width="283" height="115" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:115,&quot;width&quot;:283,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4587,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-Vg2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 424w, https://substackcdn.com/image/fetch/$s_!-Vg2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 848w, https://substackcdn.com/image/fetch/$s_!-Vg2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 1272w, https://substackcdn.com/image/fetch/$s_!-Vg2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd9f4169-373b-45a5-888a-cfb5dd195543_283x115.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2LQ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2LQ5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 424w, https://substackcdn.com/image/fetch/$s_!2LQ5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 848w, https://substackcdn.com/image/fetch/$s_!2LQ5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 1272w, https://substackcdn.com/image/fetch/$s_!2LQ5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2LQ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png" width="469" height="59" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53777305-15cd-45a1-85c4-0c114784e402_469x59.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:59,&quot;width&quot;:469,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1240,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2LQ5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 424w, https://substackcdn.com/image/fetch/$s_!2LQ5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 848w, https://substackcdn.com/image/fetch/$s_!2LQ5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 1272w, https://substackcdn.com/image/fetch/$s_!2LQ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53777305-15cd-45a1-85c4-0c114784e402_469x59.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">El append del asignar varible asigna un None a la variable en lugar de retornar la lista con los valores adicionados. Esto es porque append muta la lista y no retorna nada</figcaption></figure></div><div><hr></div><p>Y eso es todo por hoy. Si encontraste valor en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete al newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver m&#225;s sobre los beneficios dando clic ac&#225;:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran fin semana! &#128640;</p><p>Danilo</p>]]></content:encoded></item><item><title><![CDATA[Code-versaciones #1 - Camilo Duarte]]></title><description><![CDATA[Listen now (56 mins) | Conversamos de el futuro del RPA + IA, robots vs desarrollar software, las principales dificultades y que tienes que aprender para destacar en RPA]]></description><link>https://newsletter.robotipy.com/p/code-versaciones-1-camilo-duarte</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/code-versaciones-1-camilo-duarte</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Tue, 16 Jan 2024 15:30:24 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/140737233/ec44fbdc7fd10c96e13e9f93668564ef.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p>]]></content:encoded></item><item><title><![CDATA[Automatización Inteligente: Estrategias y Consejos para un Análisis Efectivo de Implementaciones RPA]]></title><description><![CDATA[Tips para un analisis preciso a la hora del relevamiento de tus bots]]></description><link>https://newsletter.robotipy.com/p/automatizacion-inteligente-estrategias</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/automatizacion-inteligente-estrategias</guid><dc:creator><![CDATA[Mariela Britos]]></dc:creator><pubDate>Fri, 05 Jan 2024 21:46:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mp9L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola! por ac&#225; Mariela &#128075;</p><p>Bienvenid@! En este articulo te ense&#241;ar&#233; algunas estrategias &#250;tiles a la hora de realizar el an&#225;lisis de proceso para la construcci&#243;n de tus robots.</p><p>Este post es una colaboraci&#243;n con <a href="https://marielaalejandrabritos.substack.com/">RPA 360</a>, el blog de Mariela Britos. Si quieres recibir estas publicaciones desde tu correo electr&#243;nico, te invito a suscribirte a mi blog.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://marielaalejandrabritos.substack.com/&quot;,&quot;text&quot;:&quot;Suscribete&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://marielaalejandrabritos.substack.com/"><span>Suscribete</span></a></p><div><hr></div><p>&#161;Saludos a todos! &#128075; Seguramente se estar&#225;n preguntando qui&#233;n soy &#128522;. </p><p>Perm&#237;tanme presentarme, soy Mariela Britos, analista de sistemas. Mi traves&#237;a en el mundo de la Automatizaci&#243;n Rob&#243;tica de Procesos (RPA) comenz&#243; hace aproximadamente 2 a&#241;os y medio como desarrolladora RPA utilizando la herramienta de Rocketbot. Actualmente, desempe&#241;o la funci&#243;n de analista de negocios RPA (Business Analyst).</p><p>El prop&#243;sito de este art&#237;culo es compartir mi experiencia y proporcionar algunos consejos clave al realizar un an&#225;lisis de procesos a automatizar. Observ&#233; que no todas las empresas cuentan con este rol espec&#237;fico para RPA, lo que lleva a que muchos desarrolladores deban asumir roles multifuncionales.</p><p>Para iniciar, ofrecer&#233; una breve explicaci&#243;n de la funci&#243;n de los roles en RPA, seguido de datos importantes para llevar a cabo un an&#225;lisis efectivo.</p><h3>Desvelando los Roles Clave en el Mundo de RPA</h3><p>Desde mi perspectiva, en el &#225;mbito de la RPA, considero que existen cinco roles fundamentales para un proyecto exitoso:</p><ol><li><p>Project Manager / Gerente de Proyecto</p></li><li><p>Tech Lead / L&#237;der T&#233;cnico</p></li><li><p>Business Analyst / Analista de Negocios / Analista Funcional</p></li><li><p>Architect RPA / Arquitecto de Soluciones</p></li><li><p>Developer RPA / Desarrolladores</p></li></ol><p>Espero que estos consejos y experiencias resulten valiosos en sus proyectos de RPA. &#161;Sigamos explorando el fascinante mundo de la automatizaci&#243;n!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mp9L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mp9L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mp9L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mp9L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mp9L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mp9L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg" width="605" height="357" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:357,&quot;width&quot;:605,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18780,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Mp9L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mp9L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mp9L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mp9L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F643b5856-5dc1-4a74-9c49-162ce8267da8_605x357.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Al observar el gr&#225;fico adjunto, queda evidente que cada pieza del rompecabezas est&#225; interconectada y la comunicaci&#243;n efectiva es la llave para lograr nuestro objetivo final.</p><p>En mi enfoque como Analista de Negocios, me sumerjo en la importancia de todos los roles mencionados. El<strong> l&#237;der del proyecto</strong> (PM) dirige y organiza, el <strong>Arquitecto de Soluciones</strong> y el L&#237;der T&#233;cnico colaboran estrechamente, y el <strong>Analista de Negocios</strong>, se conecta con el cliente para definir y dise&#241;ar el proceso.</p><div><hr></div><h4><strong>&#128269; Consejos que he aprendido en mi camino! </strong></h4><ul><li><p> &#128101;Siempre mantener una comunicaci&#243;n clara y concisa con el cliente &#8212; A la hora de armar un documento (en mi caso el PDD) o un mail recordar mantener un dialecto y una escritura clara. <br>El cliente no entiende nada de c&#243;digo ni diagramas complejos o mapeos, entonces si se realiza alguna consulta lo recomendable es darse a entender de la manera m&#225;s f&#225;cil para ellos. Esto es de suma importancia, porque podemos tener clientes nulos en el &#225;rea de tecnolog&#237;a como clientes que tienen algo de conocimiento. Pero siempre tener presente que no saben mucho y necesitan entendernos.</p></li><li><p>&#128221;Especifica requerimientos de negocio de manera clara, justificando su utilidad &#8212; Volviendo a lo mismo, ser claros ante todo y no solo por ejemplo colocar &#8220;se necesita las credenciales del correo&#8221;. Lo &#243;ptimo ser&#237;a: &#8220;se necesitan las credenciales del correo, es decir, el usuario y la contrase&#241;a del mail del bot para poder enviar un correo electr&#243;nico o porque la herramienta con que se crea el bot lo requiere&#8221;.</p></li><li><p>&#128209;Detalla tu PDD &#8212; El Process Design Document (PDD) es tu gu&#237;a y acuerdo con el cliente, det&#225;llalo exhaustivamente. </p></li><li><p>&#128488;&#65039;En la fase de an&#225;lisis, aseg&#250;rate de comprender completamente las necesidades del cliente &#8212; Para esto recomiendo realizar las sesiones que sean necesarias para su comprensi&#243;n. Muchas veces, y por experiencia, nos brindan un video con los pasos a realizar de la automatizaci&#243;n que requieren y se omiten "detalles", que luego se ven en el resultado final. Es por ello, que lo mejor al recibir un video es juntarse de nuevo con las personas involucradas en ese material y realizar una revisi&#243;n de lo que est&#225;n solicitando (c&#243;mo analistas ir ya con las preguntas o dudas armadas).</p></li><li><p>&#128161;Recuerda al cliente que el bot no piensa &#8212; Estamos aqu&#237; para materializar sus ideas. Por ejemplo: mencionar que el bot por s&#237; solo no puede saber si el nombre de una persona hace referencia a una mujer o un hombre, o si un n&#250;mero de identificaci&#243;n pertenece a un tipo espec&#237;fico de documento. Aqu&#237; podemos ayudarlos a pensar en alguna soluci&#243;n para que realice lo que ellos necesitan.</p></li><li><p>&#128483;&#65039;Explica tu PDD &#8212; Al explicar el PDD a los desarrolladores, hazlo accesible y colabora con el L&#237;der T&#233;cnico.</p></li><li><p>&#128395;&#65039;Mant&#233;n el PDD actualizado siendo una referencia valiosa ante posibles cambios del cliente &#8212;  Por experiencia, sabemos que el cliente puede cambiar algo en el proceso y ello afecta al funcionamiento correcto del bot, es por esto que tienes que mantener siempre actualizado el PDD. Adem&#225;s, de quedar como documento de apoyo de lo realizado.</p></li></ul><p>Tener experiencia en la herramienta de <strong>Rocketbot</strong> como desarrolladora ha sumado mucho, puesto que ya de antemano analizo lo solicitado a automatizar (como ser: aplicativos webs, aplicativos de escritorio, ocr, etc) y ello ayuda igual a un desarrollador "trainer/junior" que reci&#233;n comience en este mundo del RPA. </p><p>Si est&#225;n interesados, puedo compartir m&#225;s sobre mi rol o incluso ofrecer un curso detallado. La experiencia como desarrolladora en <strong>Rocketbot</strong> ha enriquecido mi perspectiva, permiti&#233;ndome abordar diversas aplicaciones.</p><p>Espero que encuentren &#250;tiles estos consejos. &#161;Gracias por leerme y por acompa&#241;arme en este viaje de automatizaci&#243;n! &#128640;&#128522;</p><div><hr></div><p>Te dejo algunos recursos que he utilizado para ir aprendiendo y formandome como analista de negocios RPA. </p><ul><li><p><a href="https://platzi.com/cursos/analista-rpa/">Curso Platzi Analista de Negocios RPA</a></p></li><li><p><a href="https://sceu.frba.utn.edu.ar/e-learning/detalle/diplomatura/1022/diplomatura-en-analisis-de-negocios-business-analysis">Diplomatura de An&#225;lisis de Negocios</a></p></li></ul><div><hr></div><p><em>Si encontraste valor en este bolet&#237;n, considera compartirlo con tu equipo.</em></p><p>Que tengas una linda semana! &#128640;</p><p>Mariela.B</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/p/automatizacion-inteligente-estrategias?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://newsletter.robotipy.com/p/automatizacion-inteligente-estrategias?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Robotipy is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[¿Cual es la mejor plataforma para una comunidad?]]></title><description><![CDATA[Hola a todos &#128075;,]]></description><link>https://newsletter.robotipy.com/p/cual-es-la-mejor-plataforma-para</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/cual-es-la-mejor-plataforma-para</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Thu, 02 Nov 2023 20:18:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola a todos &#128075;,</p><p>Hace tiempo llevo pensando en crear una comunidad para conversar m&#225;s seguido temas relacionados a programaci&#243;n y RPA y quiera preguntarles cual es la mejor plataforma para hacerlo o si les interesa.<br><br>Las que conozco son Discord, Slack, Telegram, Whatsapp, Circle o Linkedin Groups.</p><p>&#191;Cual creen que es la adecuada?</p>]]></content:encoded></item><item><title><![CDATA[Consideraciones al estimar tiempos de desarrollo]]></title><description><![CDATA[Lunes de Bots & Bytes &#8212; Edici&#243;n #04]]></description><link>https://newsletter.robotipy.com/p/consideraciones-al-estimar-tiempos</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/consideraciones-al-estimar-tiempos</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 30 Oct 2023 18:42:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5cc4000c-ff9b-4866-a7d5-9e1abda0992b_800x800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; <a href="https://www.linkedin.com/in/danilotorol">Danilo</a>&#128075; Bienvenido a <strong>Lunes de Bots &amp; Bytes</strong> &#129302;</p><p>Los d&#237;as Lunes te enviar&#233; un email con una idea breve de lo que haya aprendido o charlado durante la &#250;ltima semana acerca de <strong>RPA </strong>y <strong>Python</strong>.</p><p>Si te interesa leer acerca de Automatizaci&#243;n, programaci&#243;n y como mejorar tus desarrollos, te invito a <strong>suscribirte</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p>Todos sabemos lo dificil que es estimar el tiempo que nos tomar&#225; construir algo, sobretodo cuando estamos comenzando un proyecto. Incluso devs m&#225;s seniors pueden tener problemas al momento de hacer estimaciones precisas.</p><p>Es m&#225;s com&#250;n subestimar los tiempos, o sobreestimar el tiempo que tenemos libre para desarrollar, por eso hoy te doy algunas consideraciones que tienes que tener en cuenta adem&#225;s de los tiempos que consideres para desarrollo</p><h2>Reuniones</h2><p>Las reuniones son de las actividades que m&#225;s nos quejamos los desarrolladores porque nos quitan mucho tiempo destinado al desarrollo, y aunque sabemos que son un mal necesario, pocas veces las consideramos en nuestras estimaciones.</p><p>Todas las reuniones que puedas tener durante el proceso de desarrollo, sean o no relacionados con tu proyecto, tienes que agregarlo a la estimaci&#243;n. Ac&#225; podemos separar dos tipos de reuniones, las con tu equipo y las con el usuario. </p><p>Veamos que considerar en cada una:</p><ul><li><p>&#127970;Team meetings &#8212; Dailies, capacitaciones, ayudas a otros equipos, reuniones de empresas, todas esas reuniones fuera del desarrollo en si, afectan a la fecha de entrega.</p></li><li><p>&#129489;&#8205;&#128188;&#65039;User meetings &#8212; Adem&#225;s de las reuniones de avance, muchas veces tendremos alguna duda que tendremos que aclarar en una reuni&#243;n. Dependiendo de tus experiencias pasadas con el proceso o el usuario, ser&#225;n m&#225;s o menos, pero puedes empezar considerando 1h de reunion a la semana </p></li></ul><h2>Dias no laborales </h2><p>Aunque construyamos robots, nosotros no lo somos y como tal, tambien tenemos dias de descanso para recargar pilas.</p><p>Va a depender de tus condiciones laborales, pero te dejo mis consideraciones:</p><ul><li><p>&#9203;&#65039;Horas de trabajo &#8212; Si tienes un horario de trabajo fijo, tienes que tenerlo muy en cuenta. Si trabajas 8 horas diarias, 1 semana solo tiene 40 horas. </p></li><li><p>&#127876;Feriados &#8212; Nadie quiere trabajar un feriado as&#237; que ten el calendario a mano cada vez que te toque estimar</p></li></ul><h2>Complejidad en el desarrollo</h2><p>Esta parte es la m&#225;s dificil, ya que depende de multiples factores. Desde tu experiencia para el tipo de automatizaci&#243;n hasta la disponibilidad de los procesos. </p><p>Definiendo la complejidad del desarrollo, podemos obtener el factor de error en nuestra estimaci&#243;n y saber cuanto ponderar nuestra estimacion final. Veamos una lista a considerar:</p><ul><li><p>&#129514;Experiencia &#8212; Si no tienes experiencia en el proceso o herramienta, es probable que los tiempos sean un poco m&#225;s largos debido al tiempo de aprendizaje y adaptaci&#243;n</p></li><li><p>&#128125;Dependencias externas &#8212; Si tu proceso depende de otros sistemas o desarrollos externos, como la creaci&#243;n de alg&#250;n componente, puede retrasarte en la entrega</p></li><li><p>&#128196;Falta de documentaci&#243;n &#8212; Si la documentaci&#243;n del proceso o sistema es escasa o no existe, puede hacerte perder tiempo al tener que investigar o validar informaci&#243;n</p></li></ul><h2>Paso a produccion y pruebas</h2><p>Por &#250;ltimo, es importante considerar el tiempo que tomar&#225; pasar de la fase de desarrollo a producci&#243;n y realizar las pruebas correspondientes. Esto puede incluir:</p><ul><li><p>&#128295;Configuraciones adicionales en ambientes productivos &#8212; Asegurate de revisar si hay alguna configuraci&#243;n extra que se deba realizar en los ambientes productivos para que el proceso</p></li><li><p>&#128187;Compatibilidad entre versiones &#8212; En el caso de utilizar herramientas o sistemas con diferentes versiones, puede haber incompatibilidades que requieran tiempo adicional para solucionar.</p></li></ul><p>Con todos estos factores en mente, es importante ser honestos y realistas al estimar los tiempos de desarrollo. De nada sirve prometer una entrega en un tiempo irreal que solo generar&#225; estr&#233;s en el equipo.</p><p>Si consideramos todos estos puntos, podemos trabajar bajo una f&#243;rmula, que aunque no sea 100% precisa, nos puede orientar a estimar mejor</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{Tiempo estimado (d&#237;as)} = \\frac{(\\text{desarrollo} \\times \\text{complejidad})}{(\\text{horas laborales} - \\text{dailies})} + \\frac{\\text{reuniones usuario + otras reuniones}}{\\text{horas laborales}} + \\text{feriados}&quot;,&quot;id&quot;:&quot;PICGBWHHUJ&quot;}" data-component-name="LatexBlockToDOM"></div><p>Siendo:</p><ul><li><p>desarrollo &#8212; Tiempo enfocadas solo al desarrollo, en horas</p></li><li><p>complejidad &#8212; Factor de ponderaci&#243;n del tiempo de desarrollo seg&#250;n complejidad</p></li><li><p>horas laborales &#8212; Numero de horas laborales por d&#237;a</p></li><li><p>dailies &#8212; Reuniones diarias programadas, horas por d&#237;a</p></li><li><p>reuniones usuario &#8212; Horas estimadas en reuniones con usuario</p></li><li><p>otras reuniones &#8212; Horas estimadas en otras reuniones</p></li><li><p>feriados &#8212; Dias no laborales o feriados</p><div><hr></div></li></ul><p>Y eso es todo por hoy! Si encontraste <strong>valor</strong> en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago y podras agendar reuniones semanales conmigo.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran semana! &#128640;</p><p>Danilo</p>]]></content:encoded></item><item><title><![CDATA[Por que tienes que dejar de usar Else]]></title><description><![CDATA[Lunes de Bots & Bytes &#8212; Edici&#243;n #03]]></description><link>https://newsletter.robotipy.com/p/por-que-dejar-de-usar-else</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/por-que-dejar-de-usar-else</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 16 Oct 2023 11:31:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; <a href="https://www.linkedin.com/in/danilotorol">Danilo</a>&#128075; Bienvenido a <strong>Lunes de Bots &amp; Bytes</strong> &#129302;</p><p>Cada lunes te enviar&#233; un email con una idea breve de lo que haya aprendido o charlado durante la &#250;ltima semana acerca de <strong>RPA </strong>y <strong>Python</strong>.</p><p>Tambi&#233;n seguir&#225;s recibiendo art&#237;culos m&#225;s largos de forma bisemanal, como este &#250;ltimo:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8657f0e8-299e-4224-bded-e480f683093c&quot;,&quot;caption&quot;:&quot;Hace unos meses compart&#237; en mi linkedin como mejoramos el rendimiento de un robot cambiando la l&#243;gica del desarrollador por funciones de Excel. El resultado final, un 500% m&#225;s r&#225;pido. Luego de esa publicaci&#243;n, por alguna raz&#243;n me he encontrado con much&#237;simos m&#225;s casos donde el robot realiza muchas iteraciones haciendo los procesos innecesariamente lentos, cuando Excel lo puede hacer mejor.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Potencia tus automatizaciones con Excel&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-10-06T11:30:24.743Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aef73821-5e8a-4761-b7d7-bd2ad4a50b13_1024x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/potencia-tus-automatizaciones-con&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:136293981,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Si te interesa aprender a construir robots m&#225;s eficientes, escalables y f&#225;ciles de mantener, te invito a <strong>suscribirte</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Hace un par de a&#241;os, conversando con un compa&#241;ero acerca de <strong>clean code</strong>, me coment&#243; que utilizar un <strong>else</strong> ensuciaba nuestro c&#243;digo y lo hac&#237;a dif&#237;cil de leer.</p><p>En ese momento me choque&#243; la idea, hasta que me toc&#243; ver y escrbir c&#243;digos largos, llenos de anidaciones y dif&#237;cil de mantener.</p><p>Hoy en d&#237;a, evito cada vez que puedo utilizar los bloques <strong>else </strong>en mis desarrollos y en este post te explicar&#233; <strong>por que tu tambi&#233;n tienes que dejar de utilizar Else.</strong></p><h2>La problem&#225;tica de la anidaci&#243;n</h2><p>Los bloques <code>if-else</code> pueden parecer inofensivos al principio, especialmente cuando nuestro c&#243;digo es corto y directo. Pero a medida que nuestro c&#243;digo crece y se vuelve m&#225;s complejo, estas estructuras pueden llevar a m&#250;ltiples niveles de <strong>anidaci&#243;n</strong>, haciendo que el c&#243;digo sea m&#225;s <strong>dif&#237;cil </strong>de <strong>leer </strong>y <strong>mantener</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eZyD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eZyD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 424w, https://substackcdn.com/image/fetch/$s_!eZyD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 848w, https://substackcdn.com/image/fetch/$s_!eZyD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 1272w, https://substackcdn.com/image/fetch/$s_!eZyD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eZyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png" width="1375" height="928" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:928,&quot;width&quot;:1375,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40579,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eZyD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 424w, https://substackcdn.com/image/fetch/$s_!eZyD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 848w, https://substackcdn.com/image/fetch/$s_!eZyD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 1272w, https://substackcdn.com/image/fetch/$s_!eZyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F61a8ec13-3bed-4baf-97cb-88f3622a88b4_1375x928.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>La imagen de arriba fue un robot que me toc&#243; revisar, el cual necesitaba validar diferentes condiciones a lo largo del flujo, y si no se cumpl&#237;a alguna condici&#243;n, se ten&#237;a que detener el robot.</p><h2>Cl&#225;usulas de guarda</h2><p>En lugar de sumergirse en una cascada de condiciones y anidar cada if, una soluci&#243;n que utilizo mucho es <strong>invertir la l&#243;gica</strong>. En lugar de validar si una condici&#243;n es verdadera, evaluamos si la condici&#243;n es falsa.</p><p>Veamos un ejemplo en <strong>Python</strong> &#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IfD7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IfD7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 424w, https://substackcdn.com/image/fetch/$s_!IfD7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 848w, https://substackcdn.com/image/fetch/$s_!IfD7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!IfD7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IfD7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png" width="1368" height="1478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1478,&quot;width&quot;:1368,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:214469,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IfD7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 424w, https://substackcdn.com/image/fetch/$s_!IfD7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 848w, https://substackcdn.com/image/fetch/$s_!IfD7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!IfD7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c09bcc-a69b-402a-970d-224b39de5501_1368x1478.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Esto no solo hace mas <strong>simple </strong>el c&#243;digo, sino que lo hace m&#225;s <strong>legible </strong>e incluso <strong>f&#225;cil </strong>de mantener. En lugar de tener la condici&#243;n de stop o error al final de nuestro c&#243;digo, lo vamos creando al inicio de nuestro flujo, para facilitar la lectura.</p><p>Tener anidaciones hace dificil saber dentro de que l&#243;gica nos encontramos y realizar una modificaci&#243;n puede afectar nuestro trabajo.</p><p>Para esta t&#233;cnica podemos utilizar <strong>"cl&#225;usulas de guarda" </strong>y manejar casos especiales o excepciones en un robot o m&#233;todo diferente, que se encargue de manejar la funcionalidad espec&#237;fica y as&#237;, en lugar de tener un robot enorme, tenemos diferentes robots que manejen casos y validaciones espec&#237;ficas.</p><p>M&#225;s sobre esto lo vimos en el post acerca de los principios SOLID:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c7122cd2-e0dc-4948-aa05-dd6064d678f7&quot;,&quot;caption&quot;:&quot;Hola, por ac&#225; Danilo&#128075;Bienvenido a esta nueva secci&#243;n de Robotipy llamada Lunes de Bots &amp; Bytes &#129302; Cada lunes te enviar&#233; un email con una idea breve de lo que haya conversado o visto durante la semana&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Principios SOLID aplicados a la construcci&#243;n de robots &#129302;&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-10-02T12:30:31.192Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/principios-solid-aplicados-a-la-construccion&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:137472473,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p></p><p>Si modificamos el primero robot, nos quedar&#237;a de esta forma. Te dejo los dos casos.</p><p>Este es el robot original, donde cada parte del flujo est&#225; dentro de una validaci&#243;n. Ve como aumentan las identaciones &#128064;&#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pGV7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pGV7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 424w, https://substackcdn.com/image/fetch/$s_!pGV7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 848w, https://substackcdn.com/image/fetch/$s_!pGV7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!pGV7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pGV7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif" width="640" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:360,&quot;width&quot;:640,&quot;resizeWidth&quot;:640,&quot;bytes&quot;:365322,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pGV7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 424w, https://substackcdn.com/image/fetch/$s_!pGV7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 848w, https://substackcdn.com/image/fetch/$s_!pGV7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!pGV7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2feaa2e-952e-46a4-a6b4-d3352dd3aecb_640x360.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Este es el mismo robot pero con la l&#243;gica invertida, donde quitamos todos los niveles de identaci&#243;n de las validaciones, dejando solo la de los ciclos for y ciclos while &#128521;&#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BChb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BChb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 424w, https://substackcdn.com/image/fetch/$s_!BChb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 848w, https://substackcdn.com/image/fetch/$s_!BChb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 1272w, https://substackcdn.com/image/fetch/$s_!BChb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BChb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif" width="600" height="338" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:338,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1184043,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BChb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 424w, https://substackcdn.com/image/fetch/$s_!BChb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 848w, https://substackcdn.com/image/fetch/$s_!BChb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 1272w, https://substackcdn.com/image/fetch/$s_!BChb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a5e41fa-a020-4684-9fd5-d79c1a923f0b_600x338.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>Y eso es todo por hoy! Si encontraste <strong>valor</strong> en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago y podras agendar reuniones semanales conmigo.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://blog.robotipy.com/leaderboard?&amp;referrer_token=23i7hh&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran semana! &#128640;</p><p>Danilo</p>]]></content:encoded></item><item><title><![CDATA[ChatGPT para tu flujo de desarrollo]]></title><description><![CDATA[Lunes de Bots & Bytes &#8212; Edici&#243;n #02]]></description><link>https://newsletter.robotipy.com/p/chatgpt-para-tu-flujo-de-desarrollo</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/chatgpt-para-tu-flujo-de-desarrollo</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 09 Oct 2023 20:02:06 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8b43d691-5b80-4983-8256-052ed110a05c_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; <a href="https://www.linkedin.com/in/danilotorol">Danilo</a>&#128075;Bienvenido a <strong>Lunes de Bots &amp; Bytes</strong> &#129302;</p><p>Cada lunes te enviar&#233; un email con una idea breve de lo que haya conversado o visto durante la &#250;ltima semana acerca de RPA y Python.</p><p>Tambi&#233;n seguiras recibiendo articulos m&#225;s largos de forma bisemanal, como este &#250;ltimo:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;7480a187-c0a7-40b5-8e4c-dd33c10b9db5&quot;,&quot;caption&quot;:&quot;Hace unos meses compart&#237; en mi linkedin como mejoramos el rendimiento de un robot cambiando la l&#243;gica del desarrollador por funciones de Excel. El resultado final, un 500% m&#225;s r&#225;pido. Luego de esa publicaci&#243;n, por alguna raz&#243;n me he encontrado con much&#237;simos m&#225;s casos donde el robot realiza muchas iteraciones haciendo los procesos innecesariamente lentos, cuando Excel lo puede hacer mejor.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Potencia tus automatizaciones con Excel&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-10-06T11:30:24.743Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aef73821-5e8a-4761-b7d7-bd2ad4a50b13_1024x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/potencia-tus-automatizaciones-con&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:136293981,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Si te interesa aprender a hacer que tus robots sean m&#225;s eficientes, escalables y f&#225;ciles de mantener, te invito a suscribirte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Despu&#233;s de casi un a&#241;o que <strong>OpenAI</strong> anunci&#243; ChatGPT, ya podr&#237;amos sacar conclusiones de cuales son los usos reales que le podemos dar a esta herramienta.</p><p>Si bien muchas personas dicen que la calidad de respuesta de ChatGPT ha deca&#237;do, algo en lo que estoy de acuerdo al menos para GPT-3.5, considero que aprender a utilizar esta herramienta, tanto como producto como su API, es una obligaci&#243;n para todo desarrollador. </p><blockquote><p><em><strong>ChatGPT es el nuevo Excel</strong></em></p></blockquote><p>En este post quiero darte <strong>3 ideas</strong> que te ayudar&#225;n mejorar tu proceso de desarrollo, desde la forma de trabajar, automatizar o resolver problemas, hasta la documentaci&#243;n de tus robots. Clasifiquemos los usos en 3:</p><ul><li><p>&#129489;&#8205;&#128187; <strong>C&#243;digo</strong> &#8212; Generaci&#243;n u optimizaci&#243;n de c&#243;digo</p></li><li><p>&#128202; <strong>Manipulaci&#243;n de datos</strong> &#8212; Extracci&#243;n de informaci&#243;n o clasificaci&#243;n de datos</p></li><li><p>&#127384; <strong>Documentaci&#243;n y ayuda</strong> &#8212; Pidele a ChatGPT que te ayude a entender o hacer entender lo que necesitas</p></li></ul><blockquote><p>&#9757;&#65039; Importante no confundir <strong>ChatGPT </strong>como <strong>GPT-4</strong>. Mientras el primero es un chat, el segundo es un LLM que podemos utilizar a trav&#233;s de la API de OpenAI</p></blockquote><h2>&#129489;&#8205;&#128187;C&#243;digo</h2><p>Algo en lo que realmente es bueno ChatGPT es en la creaci&#243;n de fragmentos de c&#243;digo que resuelva el problema que le das. </p><p>ChatGPT y sus derivados son mis compa&#241;eros de programaci&#243;n. Cada vez que necesito crear un <strong>script </strong>para resolver un problema, o cuando comienzo a programar, me apoyo de ChatGPT, Github Copilot, o Bing. Estos son los casos donde m&#225;s me ha ayudado:</p><ul><li><p>&#127760; <strong>Plantillas HTML</strong> &#8212; Cada vez que tengo que aplicar estilos a un email o crear un formulario, recurro a ChatGPT para que me ayude con la estructura y dise&#241;o</p></li></ul><ul><li><p>&#129513; <strong>Expresiones Regulares Complejas</strong> &#8212; Muy &#250;til cuando necesitas extraer informaci&#243;n con patrones complejos y no sabes como crear el <strong>Regex</strong> para ese caso.</p></li><li><p>&#129299; <strong>Algoritmos</strong> &#8212; Puedes pedirle que te ayude a crear un script para filtrar, ordenar o modificar datos. Por ejemplo, filtrar una lista en Python dada una condici&#243;n</p></li></ul><p>Algunas veces no responde lo que necesito en la primera respuesta (a veces por usar un mal <strong>prompt</strong>), pero luego de unas peque&#241;as correcciones, me genera un script o Regex listo para usar.</p><blockquote><p>&#128064; Aunque ChatGPT te permita crear scripts tan complejos como le indiques, es importante tener las bases de como funciona la programaci&#243;n y las expresiones regulares para saber que corregir o preguntar.</p></blockquote><p>Echale una mirada a mi post acerca de Expresiones Regulares &#128071;</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;12cc394d-6162-4eba-9b10-0ad793a53e13&quot;,&quot;caption&quot;:&quot;Hola, por ac&#225; Daniela &#128075; Bienvenido a una nueva edici&#243;n de Robotipy. En este post finalmente aprender&#225;s como manipular textos utilizando expresiones regulares. Si quieres recibir estas publicaciones de&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Expresiones Regulares (RegEx)&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:157331433,&quot;name&quot;:&quot;Daniela Zu&#241;iga&quot;,&quot;bio&quot;:&quot;RPA Developer&quot;,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffebfdecc-04da-4e72-9471-c4b7395424ab_2115x1428.jpeg&quot;,&quot;is_guest&quot;:true,&quot;bestseller_tier&quot;:null,&quot;primaryPublicationSubscribeUrl&quot;:&quot;https://danielazuiga.substack.com/subscribe?&quot;,&quot;primaryPublicationUrl&quot;:&quot;https://danielazuiga.substack.com&quot;,&quot;primaryPublicationName&quot;:&quot;Daniela Zu&#241;iga&quot;,&quot;primaryPublicationId&quot;:1826349},{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-08-01T15:30:13.121Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/expresiones-regulares&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:135391975,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h2>Extracci&#243;n de Informaci&#243;n</h2><p>Esta es una funcionalidad que ha estado trabajando muy bien ChatGPT, y he visto casos de manejo de informaci&#243;n espectaculares. Si necesitas analizar un <strong>PDF </strong>o una <strong>hoja de c&#225;lculo</strong>, puedes cargar el archivo y comenzar a hacer preguntas</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xwzO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xwzO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 424w, https://substackcdn.com/image/fetch/$s_!xwzO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 848w, https://substackcdn.com/image/fetch/$s_!xwzO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 1272w, https://substackcdn.com/image/fetch/$s_!xwzO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xwzO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png" width="486" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:486,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26384,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xwzO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 424w, https://substackcdn.com/image/fetch/$s_!xwzO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 848w, https://substackcdn.com/image/fetch/$s_!xwzO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 1272w, https://substackcdn.com/image/fetch/$s_!xwzO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cf389a-6ede-494f-bfeb-56ffc17cb111_486x484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ahora bien, si necesitas que tu <strong>robot </strong>se encargue de procesar informaci&#243;n, puedes utilizar la <strong>API </strong>de OpenAI y enviar en formato de texto la informaci&#243;n que necesites que procese.  </p><p>La API me ha servidor para estos casos:</p><ul><li><p><strong>Extracci&#243;n de informaci&#243;n en PDFs</strong> &#8212; En conjunto con alguna actividad para extraer datos de un PDF (u OCR si necesitas), puedes enviar el texto a la API de GPT-4 para extraer informaci&#243;n que necesitas, como datos de contacto, tablas, etc.</p></li><li><p><strong>Clasificaci&#243;n de datos</strong> &#8212; Puedes enviar los datos junto con las categor&#237;as que quieres que utilice, y podr&#225;s clasificar tus datos, por ejemplo, para hacer analisis de mensajes de usuarios</p></li><li><p><strong>Traducci&#243;n de texto</strong> &#8212; Con GPT-4 puedes traducir texto sin perder el contexto</p></li></ul><p>Todos estos casos tienen que venir acompa&#241;ados de un buen <strong>prompt</strong>, por lo que te recomiendo aprender acerca de <strong>prompt engineering</strong> para evitar respuestas err&#243;nea y puedas recibir la estrucutura que necesitas</p><p>Durante el mes pasado estuve trabajando <strong><a href="https://emailgpt.rocketbot.com/#/">EmailGPT by Rocketbot</a></strong>  donde utilizamos el poder de ChatGPT para clasificar, procesar y estructurar informaci&#243;n de E-mails de diferentes casillas de correo y automatizar el env&#237;o de informaci&#243;n a diferentes destinos como Zappier, Google Sheets, etc.</p><p>Y aunque logramos crear un producto muy bueno, fue un reto lograr que ChatGPT entienda como deb&#237;a devolver la informaci&#243;n. </p><blockquote><p>&#9757;&#65039;&#129299; <strong><a href="https://ce.entel.cl/articulos/que-es-un-prompt/#:~:text=Un%20prompt%20es%20una%20instrucci%C3%B3n,que%20se%20especialice%20la%20herramienta.">Prompt</a></strong>: instrucci&#243;n o texto inicial que se le proporciona a una herramienta de IA generativa para guiar su generaci&#243;n de respuestas o resultados, seg&#250;n los formatos en los que se especialice la herramienta.</p></blockquote><h2>&#127384;Documentaci&#243;n y ayuda </h2><p>La parte m&#225;s aburrida del desarrollo siempre es documentar y para algunos, tambi&#233;n leer documentaci&#243;n. Si eres de ese tipo de personas, ChatGPT cae como anillo al dedo.</p><p>Construir un robot, despu&#233;s de todo, es <strong>programar </strong>sobre un archivo json, xml, etc., y como ya sabemos, esta herramienta se lleva bien con el texto, as&#237; que le podemos sacar provecho para que nos ayude a entender robots o documentarlos.</p><h3>&#129302;Creaci&#243;n y Explicaci&#243;n de robots</h3><p>Muchas veces nos toca continuar y corregir robots de otros desarrolladores, vemos lo que se desarroll&#243; y no entendemos nada. A veces incluso no contamos con documentaci&#243;n o diagrama de flujo. </p><p>Si trabajas con <strong>Rocketbot</strong>, puedes probar su nueva integraci&#243;n llamada <strong><a href="https://copilot.rocketbot.com/#/">Rocketbot Copilot</a></strong>, el cual te permite:</p><ul><li><p>&#128736;&#65039; Crear robots a partir de un prompt</p></li><li><p>&#129504; Ver explicaci&#243;n de robots a partir de un json</p></li><li><p>&#128260; Importar c&#243;digo directamente en Studio</p></li></ul><blockquote><p>&#128680;&#128064;: Actualmente se encuentra como beta</p></blockquote><h3>&#128204;Diagrama de flujo y documentaci&#243;n</h3><p>La &#250;ltima vez que cre&#233; un <strong>diagrama de flujo</strong> en ChatGPT, solo exist&#237;a un plugin para esto y volviendo a revisar me doy cuenta que existen mucho m&#225;s.</p><p>Si buscas diagram en la plugin store, puedes encontrar algunas extensiones que te crear&#225;n diagrama de flujos con solo explicar lo que tiene que realizar tu automatizaci&#243;n.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T1vS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T1vS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 424w, https://substackcdn.com/image/fetch/$s_!T1vS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 848w, https://substackcdn.com/image/fetch/$s_!T1vS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 1272w, https://substackcdn.com/image/fetch/$s_!T1vS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T1vS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png" width="1126" height="691" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:691,&quot;width&quot;:1126,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:84732,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T1vS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 424w, https://substackcdn.com/image/fetch/$s_!T1vS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 848w, https://substackcdn.com/image/fetch/$s_!T1vS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 1272w, https://substackcdn.com/image/fetch/$s_!T1vS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8a6e366-d3d9-4fd0-9678-ecb5884f018d_1126x691.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>El dise&#241;o de estos diagramas no ser&#225;n tan bonitos como los que puedes hacer t&#250;, lo s&#233; &#128521; pero te puede serv&#237;r como una <strong>gu&#237;a</strong> antes de comenzar a crearlo. Simplemente escribes todos los <strong>pasos</strong> que tiene que realizar tu <strong>robot</strong> y te crear&#225; un diagrama de flujo.</p><p>Por otro lado, tambi&#233;n puedes <strong>explicar</strong> tu proceso y pedirle que te cree un documento con los objetivos, requerimientos, bloqueos, y otras secciones que necesites. Te crear&#225; toda la estructura para que solo tengas que ajustar y/o completar.</p><div><hr></div><p>Y eso es todo por hoy! Si encontraste valor en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver m&#225;s sobre los beneficios dando clic ac&#225;:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran semana! &#128640;</p><p>Danilo</p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p></p><p> </p>]]></content:encoded></item><item><title><![CDATA[Potencia tus automatizaciones con Excel]]></title><description><![CDATA[Como utilizar el poder de Excel para hacer tu robot sea +500% m&#225;s r&#225;pido]]></description><link>https://newsletter.robotipy.com/p/potencia-tus-automatizaciones-con</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/potencia-tus-automatizaciones-con</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Fri, 06 Oct 2023 11:30:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/aef73821-5e8a-4761-b7d7-bd2ad4a50b13_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hace unos meses compart&#237; en mi <a href="https://www.linkedin.com/in/danilotorol/">linkedin</a> como mejoramos el rendimiento de un robot cambiando la l&#243;gica del desarrollador por <strong>funciones </strong>de <strong>Excel</strong>. El resultado final, un 500% m&#225;s <strong>r&#225;pido</strong>.</p><p>Luego de esa publicaci&#243;n, por alguna raz&#243;n me he encontrado con much&#237;simos m&#225;s casos donde el robot realiza muchas iteraciones haciendo los procesos innecesariamente lentos, cuando Excel lo puede hacer mejor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YEts!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YEts!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 424w, https://substackcdn.com/image/fetch/$s_!YEts!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 848w, https://substackcdn.com/image/fetch/$s_!YEts!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 1272w, https://substackcdn.com/image/fetch/$s_!YEts!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YEts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png" width="596" height="325.9889502762431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4eacd873-1f77-4dde-b068-d703c857149f_724x396.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:396,&quot;width&quot;:724,&quot;resizeWidth&quot;:596,&quot;bytes&quot;:48874,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YEts!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 424w, https://substackcdn.com/image/fetch/$s_!YEts!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 848w, https://substackcdn.com/image/fetch/$s_!YEts!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 1272w, https://substackcdn.com/image/fetch/$s_!YEts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eacd873-1f77-4dde-b068-d703c857149f_724x396.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Los consejos que doy siempre son para casos concretos: Activar una configuraci&#243;n o cambiar un bucle por una f&#243;rmula.</p><p>As&#237; que hoy voy a escribir una <strong>Gu&#237;a </strong>que agrupe las <strong>t&#233;cnicas de Excel</strong> que m&#225;s he utilizado, junto con v&#237;deos mostrando casos de uso para que puedas utilizarlas en tus futuros robots. </p><p>Entonces, lo que veremos hoy ser&#225;:</p><ul><li><p>&#129008;Formulas &#8212; Como delegar los c&#225;lculos a Excel</p></li><li><p>&#9881;&#65039;Funcionalidades &#8212; Funciones que necesitas activar para optimizar rendimiento</p></li><li><p>&#128104;&#8205;&#128187;C&#243;digo &#8212; Como crear c&#243;digo python para controlar cada parte de Excel</p></li></ul><p>Empecemos!</p><h2>F&#243;rmulas en Excel</h2><p>Las formulas de Excel son una de las funcionalidades m&#225;s <strong>potentes </strong>de la aplicaci&#243;n y nos permiten hacer casi de todo, en relaci&#243;n a <strong>c&#225;lculos</strong>.</p><p>Estas son las formulas y funciones que veremos hoy:</p><ul><li><p>&#129694; <strong>=A1</strong> &#8212; Referencia a otras celdas</p></li><li><p><strong>&#10133; SUMA - SUMAR.SI &#8212; </strong>Suma un rango o una serie de n&#250;meros</p></li><li><p>&#128270; <strong>BUSCARV &#8212; </strong>Busca un elemento en la primera columna de una tabla o rango y extrae un valor</p></li><li><p>&#129309; <strong>INDICE - COINDICIR &#8212;</strong> Con indice puedes encontrar un elemento por su posici&#243;n y con coincidir encuentras la posici&#243;n de un elemento</p></li><li><p>&#10060; <strong>SI.ERROR - SI.ND &#8212; </strong>Estas funciones te permiten controlar errores como #!DIV/0! o #N/D</p></li></ul><blockquote><p><sup>&#128161;Utilizar una f&#243;rmula permite que se actualicen los datos ante cualquier modificaci&#243;n del usuario</sup></p></blockquote><h3>&#129694;Referencia a otras celdas</h3><p>Esta es la f&#243;rmula m&#225;s <strong>sencilla </strong>que puedes usar pero nos ayud&#243; a <strong>mejorar 10x</strong> la velocidad de nuestra automatizaci&#243;n</p><p>Para utilizar esta <em>"formula"</em> simplemente tienes que colocar un igual <code>(=)</code> y la celda que quieres referenciar</p><p>Puede que parezca poco <strong>&#250;til</strong>, pero te servir&#225; cuando necesites copiar datos entre celdas r&#225;pidamente. Te dejo un video mostrando un caso de uso &#128071;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;72f8512c-1b5d-4f90-8026-010825de31d8&quot;,&quot;duration&quot;:null}"></div><h3><strong>&#10133;</strong>SUMAR.SI y SUMAR.SI.CONJUNTO</h3><p>Cuando tenemos que sumar <strong>grandes conjuntos</strong> de datos, basados en criterios espec&#237;ficos, tenemos dos funciones que nos brinda Excel: <strong>SUMAR.SI</strong><code> y </code><strong>SUMAR.SI.CONJUNTO</strong></p><p>Las f&#243;rmulas de sumas nos permiten sumar un rango de celdas r&#225;pidamente, evitando tener que extraer, iterar y luego sumar los datos por nuestra cuenta.</p><h4>SUMAR.SI (SUMIF)</h4><p>Con la funci&#243;n <strong>SUMAR.SI</strong> podemos sumar valores en un rango que cumpla con un &#250;nico criterio o una &#250;nica condici&#243;n. </p><blockquote><p>&#128173;Esta f&#243;rmula le dice a Excel: De este rango de datos, suma solo los valores que sean igual a esta condici&#243;n</p></blockquote><p>La forma de escribir la f&#243;rmula es la siguiente:</p><ul><li><p>En ingl&#233;s, utiliza coma para separar los par&#225;metros</p></li></ul><div class="pullquote"><p>=SUMIF(Rango, Criterio, Rango a sumar)</p></div><ul><li><p>En Espa&#241;ol, utiliza punto y coma para separar los par&#225;metros</p></li></ul><div class="pullquote"><p>=SUMAR.SI(Rango; Criterio; Rango a sumar)</p></div><p>Veamos un ejemplo de como aplicarlo a un caso sencillo. </p><p>Digamos que queremos sumar el costo de todos los productos que tengan un id mayor a 5. La f&#243;rmula quedar&#237;a as&#237;:</p><ul><li><p><strong>Rango</strong>: B3:B12 es el <strong>rango </strong>de las celdas donde quiero que Excel revise la condici&#243;n que quiero que se cumpla</p></li><li><p><strong>Criterio</strong>: <em>"&gt;5"</em> es la <strong>condici&#243;n </strong>que se tiene que cumplir para sumar. Todos los valores mayor a 5</p></li><li><p><strong>Rango a sumar</strong>: C3:C12 es el <strong>rango </strong>donde se encuentran los valores que se quieren <strong>sumar</strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hD4c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hD4c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 424w, https://substackcdn.com/image/fetch/$s_!hD4c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 848w, https://substackcdn.com/image/fetch/$s_!hD4c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 1272w, https://substackcdn.com/image/fetch/$s_!hD4c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hD4c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png" width="630" height="304.0323886639676" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:1235,&quot;resizeWidth&quot;:630,&quot;bytes&quot;:120103,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hD4c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 424w, https://substackcdn.com/image/fetch/$s_!hD4c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 848w, https://substackcdn.com/image/fetch/$s_!hD4c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 1272w, https://substackcdn.com/image/fetch/$s_!hD4c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff698247a-6d8a-4880-94b9-1204036e08ae_1235x596.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Sin la f&#243;rmula, nosotros o nuestro <strong>robot </strong>tendr&#237;a que recorrer fila a fila validando si el id es mayor a 5 y sumar los valores. Dependiendo la cantidad de datos, incluso para un robot puede ser <strong>lento</strong>, en cambio Excel lo puede hacer en un par de segundos</p><h4>SUMAR.SI.CONJUNTO (SUMIFS)</h4><p>La funci&#243;n <strong>SUMAR.SI.CONJUNTO</strong> permite sumar valores en un rango que cumpla con m&#225;s de un criterio. Podemos definir tantos criterios como queramos.</p><blockquote><p>&#128173;Esta f&#243;rmula le dice a Excel: De este rango de datos, suma solo los valores que sean igual a esta condici&#243;n, y a la vez igual a esta otra condici&#243;n e igual a esta otra condici&#243;n e igual&#8230;</p></blockquote><p>La forma de escribir la f&#243;rmula de SUMAR.SI.CONJUNTO es la siguiente:</p><ul><li><p>En ingl&#233;s, utiliza coma para separar los par&#225;metros y espa&#241;ol, utiliza punto y coma para separar los par&#225;metros</p></li></ul><div class="pullquote"><p>=SUMIFS(Rango a sumar, Rango 1, Criterio 1, Rango 2, Criterio2, &#8230;)</p><p>=SUMAR.SI.CONJUNTO(Rango a sumar; Rango 1; Criterio 1; Rango 2; Criterio2; &#8230;)</p></div><p>En el ejemplo, digamos que ahora queremos sumar el costo de todos los productos que tengan un id mayor a 5 y menor a 7. A diferencia del ejemplo anterior, necesitamos dos condiciones que se tienen que cumplir:</p><ul><li><p><strong>Rango a sumar</strong>: C3:C12 es el rango donde se encuentran los valores que se quieren sumar</p></li><li><p><strong>Criterio 1</strong>: <em>"&gt;5"</em> es la primera condici&#243;n para decidir que valores sumar. Todos los valores mayor a 5</p></li><li><p><strong>Rango 1</strong>: B3:B12 es el rango con los valores que se comparar&#225; con el criterio 1</p></li><li><p><strong>Criterio 2</strong>: <em>"&lt;7"</em> es la segunda condici&#243;n para decidir que valores sumar. Todos los valores menor a 7</p></li><li><p><strong>Rango 2</strong>: B3:B12 es el rango con los valores que se comparar&#225; con el criterio 2. En este ejemplo es el mismo rango 1 pero puede ser diferente</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TpmI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TpmI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 424w, https://substackcdn.com/image/fetch/$s_!TpmI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 848w, https://substackcdn.com/image/fetch/$s_!TpmI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 1272w, https://substackcdn.com/image/fetch/$s_!TpmI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TpmI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png" width="614" height="294.32226720647776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:592,&quot;width&quot;:1235,&quot;resizeWidth&quot;:614,&quot;bytes&quot;:122438,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TpmI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 424w, https://substackcdn.com/image/fetch/$s_!TpmI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 848w, https://substackcdn.com/image/fetch/$s_!TpmI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 1272w, https://substackcdn.com/image/fetch/$s_!TpmI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55bf887-6d74-418d-a34e-2aa7867d213e_1235x592.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Para este caso agregamos Criterio 1 y Criterio 2, pero puedes agregar m&#225;s criterios siguiendo la misma l&#243;gica.</p><h3>&#128270;BUSCARV (VLOOKUP)</h3><p>Esta es la funci&#243;n que todo usuario de Excel debe conocer y es bastante &#250;til cuando quieres <strong>poblar</strong> tus datos con informaci&#243;n de otro conjunto.</p><p><strong>BUSCARV</strong> act&#250;a como un <strong>puente</strong>, conectando distintos datos en base a un valor com&#250;n, generalmente presente en una columna.</p><div class="pullquote"><p><em>=vlookup("Valor a buscar", "Rango donde buscar", "Columna de matriz a extraer", "Coincidencia")</em></p></div><p>En este v&#237;deo te explico un caso de uso de como utilizar esta funci&#243;n</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;ced1af45-e810-4740-8267-30498ced8bd7&quot;,&quot;duration&quot;:null}"></div><blockquote><p>&#128680;&#128064; Una de las limitantes de esta f&#243;rmula es que el dato a buscar tiene que estar siempre en la primera columna del rango</p></blockquote><h3>&#129309;INDICE-COINCIDIR (INDEX-MATCH) </h3><p>Estas dos funciones son como Batman y Robin. Mientras que COINCIDIR te ayuda a encuentrar la posici&#243;n de lo que quieres buscar, INDICE te trae el valor que existe en la posici&#243;n que le indiques.</p><p>Esta formula es un reemplazo perfecto para <strong>BUSCARV</strong>, porque te permite buscar en cualquier columna de tu rango y no solo en la primera.</p><p>La sintaxis de cada una es la siguiente:</p><ul><li><p>En Ingles, separamos los valores por coma</p></li></ul><div class="pullquote"><p>=INDEX(Rango, numero de la fila, numero de la columna)</p><p>=MATCH(Valor a buscar, rango donde buscar, tipo de coincidencia)</p></div><ul><li><p>En espa&#241;ol, separamos por punto y coma</p><div class="pullquote"><p>=INDICE(Rango, numero de la fila, numero de la columna)</p><p>=COINCIDIR(Valor a buscar, rango donde buscar, tipo de coincidencia)</p></div></li></ul><p>Te dejo un v&#237;deo explicando un como utilizar esta funci&#243;n &#128071;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;98c6cf38-006b-4ddc-89ed-1506c7426c8e&quot;,&quot;duration&quot;:null}"></div><h3>&#10060;SI.ERROR</h3><p>Algunas veces por falta de datos o datos err&#243;neos, provocamos <strong>errores</strong> en cadena en diferentes datos de nuestra hoja de c&#225;lculo.</p><p>Supongamos que queremos calcular el porcentaje de variaci&#243;n entre un valor obtenido y un valor deseado. Puede darse un caso, donde a&#250;n no se tenga informaci&#243;n de los valores deseados para ciertos registros y nos generar&#225; un error como indica la imagen.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sFmp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sFmp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 424w, https://substackcdn.com/image/fetch/$s_!sFmp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 848w, https://substackcdn.com/image/fetch/$s_!sFmp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 1272w, https://substackcdn.com/image/fetch/$s_!sFmp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sFmp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png" width="277" height="223" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:223,&quot;width&quot;:277,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5122,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sFmp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 424w, https://substackcdn.com/image/fetch/$s_!sFmp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 848w, https://substackcdn.com/image/fetch/$s_!sFmp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 1272w, https://substackcdn.com/image/fetch/$s_!sFmp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01147063-0649-4f5c-b9e7-1987a327aa87_277x223.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>El error <strong>#DIV/0!</strong> nos indica que no se puede dividir por cero y esto es porque en la columna <em>Esperado</em> no hay informaci&#243;n. </p><p>Para controlar estos casos es cuando necesitamos utilizar la funci&#243;n <strong>SI.ERROR</strong></p><p><strong>SI.ERROR</strong> nos sirve para poder <strong>controlar los errores</strong> que ocurran en una f&#243;rmula. Ser&#237;a una especie de <strong>try catch</strong> de la programaci&#243;n, pero en una f&#243;rmula de Excel</p><p>La sintaxis de cada una es la siguiente:</p><ul><li><p>En Ingles, separamos los valores por coma y en espa&#241;ol, con punto y coma</p></li></ul><div class="pullquote"><p>=IFERROR(formula, valor en caso de error)</p><p>=SI.ERROR(formula; valor en caso de error)</p></div><p>Para nuestro ejemplo, quedar&#237;a de la siguiente f&#243;rmula</p><ul><li><p>Formula &#8212; Ingresamos la f&#243;rmula que nos genera un error cuando no existe datos para dividir</p></li><li><p>Valor en cado de error &#8212; Ingresamos un 0, para que nos muestre ese valor en lugar de #DIV/0!. Puedes usar cualquier valor que necesites</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!18as!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!18as!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 424w, https://substackcdn.com/image/fetch/$s_!18as!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 848w, https://substackcdn.com/image/fetch/$s_!18as!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 1272w, https://substackcdn.com/image/fetch/$s_!18as!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!18as!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png" width="307" height="228" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:228,&quot;width&quot;:307,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5942,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!18as!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 424w, https://substackcdn.com/image/fetch/$s_!18as!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 848w, https://substackcdn.com/image/fetch/$s_!18as!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 1272w, https://substackcdn.com/image/fetch/$s_!18as!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcdbbe42-a74b-4741-8bd2-3806f39e410a_307x228.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><blockquote><p>&#128517; Mi excel est&#225; en portug&#233;s, por eso en la imagen se ve un <strong>SEERRO</strong>, pero el funcionamiento es el mismo</p></blockquote><h3>&#10060;SI.ND</h3><p>La f&#243;rmula <strong>SI.ND</strong> cumple la misma funci&#243;n que <strong>SI.ERROR</strong>, pero en lugar de controlar cualquier error, controla los errores <strong>#N/D</strong>, como el que nos apareci&#243; en el video de <strong>INDICE y COINCIDIR</strong></p><p>La sintaxis es la misma que <strong>SI.ERROR</strong> (en ingl&#233;s, el error es "#N/A")</p><div class="pullquote"><p>=IFNA(formula, valor en caso de error)</p><p>=SI.ND(formula; valor en caso de error)</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9kW4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9kW4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 424w, https://substackcdn.com/image/fetch/$s_!9kW4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 848w, https://substackcdn.com/image/fetch/$s_!9kW4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 1272w, https://substackcdn.com/image/fetch/$s_!9kW4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9kW4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png" width="500" height="306.06860158311343" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:758,&quot;resizeWidth&quot;:500,&quot;bytes&quot;:40422,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9kW4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 424w, https://substackcdn.com/image/fetch/$s_!9kW4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 848w, https://substackcdn.com/image/fetch/$s_!9kW4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 1272w, https://substackcdn.com/image/fetch/$s_!9kW4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc372bf58-e5e8-42dd-86f0-7b3d9a60fd36_758x464.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Funcionalidades de Excel</h2><p>Dedicar tiempo a <strong>entender las funcionalidades</strong> de las aplicaciones que automatizas es una cualidad escencial para un desarrollador RPA. Y entender las funcionalidades que tiene Excel es <strong>obligatorio.</strong></p><p>Escrib&#237; acerca de <a href="https://blog.robotipy.com/i/104782876/entiende-los-sistemas-que-automatizas">entender las aplicaciones que automatizas</a> en mi primer articulo:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;b6d43dfc-a211-418a-a99b-d51e6f15dcc8&quot;,&quot;caption&quot;:&quot;Hey, por ac&#225; Danilo&#128075; Bienvenido a la primera edici&#243;n de Robotipy. En esta ocaci&#243;n te cuento desde mi perspectiva como desarrollador de software y desarrollador RPA, 5 puntos que debes saber para emp&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo mejorar como RPA Developer &#129302; &quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-07-10T14:00:43.063Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/como-mejorar-como-rpa-developer&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:104782876,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:10,&quot;comment_count&quot;:2,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Estas son las <strong>3 funcionalidades</strong> que m&#225;s me han ayudado en mis robots:</p><ul><li><p>&#9000;&#65039; <strong>Macros &#8212; </strong>Lenguaje de programaci&#243;n dentro de Excel</p></li><li><p>&#128190; <strong>Formato condicional &#8212; </strong>Resalta celdas o rango de celdas seg&#250;n una o m&#225;s condiciones</p></li><li><p>&#128290; <strong>Opciones de C&#225;lculo &#8212; </strong>Elije si quieres que los c&#225;lculos se hagan Autom&#225;tico, Solo para tablas o Manual</p></li></ul><h3>&#128190;Formato condicional</h3><p>M&#225;s de alguna vez nos ha tocado aplicar <strong>estilos </strong>a nuestras hojas de c&#225;lculo para que se vean m&#225;s <strong>bonitas </strong>o <strong>resalten </strong>algunas partes que son importantes.</p><p>En el video que te muestro a continuaci&#243;n te explico</p><ol><li><p>Como utilizar formato condicional</p></li><li><p>Como utilizar formato condicional en Python y Rocketbot</p></li></ol><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;cf996454-879e-43d0-a321-e13aa02d622d&quot;,&quot;duration&quot;:null}"></div><p>Las ventajas de utilizar formato condicional respecto a un formato normal, es que te permite <strong>modificar</strong> cualquier valor en tus hojas sin tener que volver a <strong>formatear</strong>. Ya que el formato condicional se aplica autom&#225;ticamente ante cualquier modificaci&#243;n.</p><h3>&#128290;Opciones de C&#225;lculo</h3><p>Este consejo ya lo compart&#237; en mi <a href="https://www.linkedin.com/in/danilotorol/">Linkedin</a> y es que me ha ayudado much&#237;simo en el rendimiento de mis robots, haciendo que procesos que demoran cerca de 1 hora, pasen a demorar solo 3 minutos!!</p><p>Las opciones de c&#225;lculo le indican a Excel cuando realizar el c&#225;lculo sobre las f&#243;rmulas que existen en el documento. Si la tiene en autom&#225;tico, Excel se encargar&#225; de actualizar en tiempo real cada modificaci&#243;n que ocurra para que la puedas ver.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BDDn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BDDn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BDDn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BDDn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BDDn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BDDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg" width="530" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:530,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;graphical user interface, application, table, Excel&quot;,&quot;title&quot;:&quot;graphical user interface, application, table, Excel&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="graphical user interface, application, table, Excel" title="graphical user interface, application, table, Excel" srcset="https://substackcdn.com/image/fetch/$s_!BDDn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BDDn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BDDn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BDDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b300406-8ba6-4e47-a32a-75d25b3809e2_530x394.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Al tenerlo de forma autom&#225;tica, Excel puede tardar seg&#250;n la cantidad de datos que tenga tu archivo y si est&#225;s haciendo modificaciones todo el tiempo, hacemos que Excel tenga que c&#225;lcular cada segundo.</p><p>Puedes modificar el tipo de c&#225;lculo por cada archivo desde la pesta&#241;a f&#243;rmula de Excel o de forma general y hacer que se actualice cada vez que se guarde el archivo.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ocHr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ocHr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 424w, https://substackcdn.com/image/fetch/$s_!ocHr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 848w, https://substackcdn.com/image/fetch/$s_!ocHr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 1272w, https://substackcdn.com/image/fetch/$s_!ocHr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ocHr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png" width="450" height="176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:176,&quot;width&quot;:450,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Captura de pantalla para seleccionar la casilla Recalcular libro antes de guardar.&quot;,&quot;title&quot;:&quot;Captura de pantalla para seleccionar la casilla Recalcular libro antes de guardar.&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Captura de pantalla para seleccionar la casilla Recalcular libro antes de guardar." title="Captura de pantalla para seleccionar la casilla Recalcular libro antes de guardar." srcset="https://substackcdn.com/image/fetch/$s_!ocHr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 424w, https://substackcdn.com/image/fetch/$s_!ocHr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 848w, https://substackcdn.com/image/fetch/$s_!ocHr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 1272w, https://substackcdn.com/image/fetch/$s_!ocHr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8e6c52f-61ef-4d23-890b-c8403851e62b_450x176.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Si quieres hacerlo con Rocketbot, puedes ver el c&#243;digo de la macro de igual forma como lo hicimos con el formato condicional. Luego de eso, convertirlo a Python y agregarlo al incio de tu robot.</p><div><hr></div><p>Y eso es todo por hoy. Substack me indica que el post es muy largo para el email &#128517; as&#237; que tendr&#233; que continuar en una parte 2 si les gusta este contenido.</p><p>Si encontraste valor en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver m&#225;s sobre los beneficios dando clic ac&#225;:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran fin semana! &#128640;</p><p>Danilo</p>]]></content:encoded></item><item><title><![CDATA[Principios SOLID aplicados a la construcción de robots 🤖]]></title><description><![CDATA[Lunes de Bots & Bytes &#8212; Edici&#243;n #01]]></description><link>https://newsletter.robotipy.com/p/principios-solid-aplicados-a-la-construccion</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/principios-solid-aplicados-a-la-construccion</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Mon, 02 Oct 2023 12:30:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yHjq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>Hola, por ac&#225; <a href="https://www.linkedin.com/in/danilotorol">Danilo</a>&#128075;Bienvenido a esta nueva secci&#243;n de Robotipy llamada Lunes de Bots &amp; Bytes &#129302;</p><p>Cada lunes te enviar&#233; un email con una idea breve de lo que haya conversado o visto durante la semana anterior acerca de RPA y Python.</p><p>Tambi&#233;n seguiras recibiendo articulos m&#225;s largos de forma bisemanales, como nuestra &#250;ltimo post:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;bd7a9fae-a28e-4f45-ac08-acee70bf2606&quot;,&quot;caption&quot;:&quot;Hola, por ac&#225; Danilo &#128075; Bienvenido a esta nueva edici&#243;n de Robotipy. En este art&#237;culo explicaremos como leer los logs de rocketbot, para que puedas entender los errores y puedas crear tus propios logs.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Logs en Rocketbot&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2023-08-22T12:51:00.493Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.robotipy.com/p/logs-en-rocketbot&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:136149177,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Si te interesa aprender a hacer que tus robots sean m&#225;s eficientes, escalables y f&#225;ciles de mantener, te invito a suscribirte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Hace dos semanas estuve aprendiendo m&#225;s acerca de principios de dise&#241;o y de como construir un software m&#225;s robusto y escalable, y volv&#237; a leer acerca de los principios SOLID. </p><p>Estos principios, si bien fueron pensado para el desarrollo de software, me pregunt&#233; como ser&#237;a aplicarlos en RPA.</p><p>Hice una encuesta en Linkedin para saber cuantas personas utilizan estos principios para sus automatizaciones y me sorprendi&#243; saber que casi la mitad de los votantes indicaron que s&#237; los aplican&#128293;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yHjq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yHjq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 424w, https://substackcdn.com/image/fetch/$s_!yHjq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 848w, https://substackcdn.com/image/fetch/$s_!yHjq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 1272w, https://substackcdn.com/image/fetch/$s_!yHjq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yHjq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png" width="747" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:747,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51453,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yHjq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 424w, https://substackcdn.com/image/fetch/$s_!yHjq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 848w, https://substackcdn.com/image/fetch/$s_!yHjq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 1272w, https://substackcdn.com/image/fetch/$s_!yHjq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41746f17-6abf-4934-bc5b-0fc7e7c015d3_747x464.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Realmente esto me qued&#243; atrapado en la cabeza, as&#237; que decid&#237; escribir como aplicar los principios SOLID en la construcci&#243;n de nuestros robots.</p><h2>&#129521;Que es SOLID?</h2><p>SOLID es un acronimo en ingl&#233;s para los siguientes principios: Responsabilidad &#250;nica, Abierto-Cerrado, Sustituci&#243;n de Liskov, Segregaci&#243;n de interfaces e inversi&#243;n de dependencias.</p><blockquote><p><strong>SOLID</strong> (<em>Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion</em>) es un acr&#243;nimo introducido por Robert C. Martin que representa 5 principios b&#225;sicos de la POO y el dise&#241;o. Cuando estos principios se aplican en conjunto es m&#225;s probable que un desarrollador cree un sistema que sea f&#225;cil de mantener y ampliar con el tiempo.</p><p>- <a href="https://es.wikipedia.org/wiki/SOLID">SOLID</a>: Wikipedia</p></blockquote><p>Estos principios establecen las pr&#225;cticas para construir c&#243;digo mantenible y aunque es pensado normalmente para la programaci&#243;n orientada a objetos, tambi&#233;n puede ser aplicada a la programaci&#243;n funcional y por lo tanto, al RPA.</p><p>Ac&#225; van 4 ideas de como puedes aplicarlos en tus bots.</p><h2>&#129513;Modularizaci&#243;n de procesos</h2><p>De forma general, todos los principios nos llevan al mismo lugar. Segmentar tu proceso en peque&#241;as partes con subrobots con l&#243;gicas espec&#237;ficas.</p><p>Dividir tu robot en tareas espec&#237;ficas te va a facilitar detectar errores, ya que si algo falla, sabr&#225;s donde buscar. </p><p>El principio de responsabilidad &#250;nica te dice que cada robot tiene que tener una &#250;nica responsabilidad y un solo motivo para cambiar.</p><p>Por ejemplo, supongamos que tenemos un robot que debe iniciar sesi&#243;n en un sitio web, extraer datos y luego guardarlo en una planilla de c&#225;lculo, lo m&#225;s recomendable es dividir este proceso en al menos 3 robots. Uno para iniciar sesi&#243;n, otro para extraer los datos y uno para almacenarlos.</p><p>T&#233;cnicas que te pueden ayudar a modularizar son:</p><ul><li><p>Estrucutra basada en la interfaz &#8212; Tu robot deber&#237;a cambiar solo si una parte de la interfaz cambia</p></li><li><p>Estructura basada en L&#243;gica &#8212; Tu robot solo deber&#237;a cambiar si algo en la l&#243;gica del robot cambia</p></li></ul><h2>&#9851;&#65039;Robots reciclables</h2><p>A medida que realizamos m&#225;s automatizaciones, comenzamos a tener procesos que comparten los mismos flujos de trabajo, como por ejemplo, robots para inicio de sesi&#243;n en ciertos portales.</p><p>Estos robots con la misma l&#243;gica deber&#237;an poder ser reutilizables en tus diferentes automatizaciones sin tener que modificar su c&#243;digo.</p><p>El principio abierto-cerrado nos dice que un robot debe quedarse abierto para su extensi&#243;n, pero cerrado para su modificaci&#243;n. Esto significa que tenemos que crear robots que podamos reutilizar y agregar m&#225;s funcionalidades, pero no modificar la existente.</p><p>Si aprendemos a aplicar este principio, reduciremos el riesgo de introducir errores en lo que ya tenemos desarrollado cuando necesitemos agregar m&#225;s funcionalidades a nuestras automatizaciones</p><h2>&#128578;Construye robots simples</h2><p>Crear una navaja suiza no es una buena idea. Un robot que recibe decenas de par&#225;metros y validaciones para casos particulares solo nos hace dif&#237;cil la tarea de debugear o agregar nuevas funcionalidades.</p><p>El principio de segregaci&#243;n de interfaces se traduce en construir robots simples que realicen actividades espec&#237;ficas y reciban una cantidad reducida de par&#225;metros, en lugar de robots gen&#233;ricos con varias variables de entrada.</p><p>M&#225;s de alguna vez hemos construido un robot reciclable, agregando validaciones, variables y actividades que no se ejecutan, para que funcione en muchos casos. Cuando pensemos en esto volvamos al primer punto. Crear robots m&#225;s peque&#241;os que manejen cada uno de esos casos</p><h2>&#128256;Robot flexible a los cambios</h2><p>Los procesos cambian todo el tiempo y no podemos evitar que ciertas partes de la l&#243;gica de nuestro robot falle en estos casos.</p><p>Imagina que tienes un robot que tiene un robot hijo que se encarga de extraer informaci&#243;n de un documento espec&#237;fico de un banco y retorna los datos al robot principal para ser usado por otro subrobot.</p><p>Si el usuario decide cambiar de banco, tu automatizaci&#243;n deber&#237;a poder seguir funcionando una vez que modificas el robot hijo encargado de la extracci&#243;n de los datos.</p><p>El Principio de Sustituci&#243;n de Liskov nos indica justamente eso. Deber&#237;as poder reparar o intercambiar robots que realicen una tarea espec&#237;fica, sin causar problemas en tu flujo.</p><h2>&#129496;Usa tu criterio</h2><p>Tanto el desarrollo de software como la automatizaci&#243;n de procesos requiere mucho m&#225;s que programar. Tenemos que cumplir tiempos de entrega, documentar, atender reuniones, entre mil otras cosas. </p><p>Estos principios no son una regla que debe aplicarse siempre, y si no lo haces tus procesos est&#225;n mal automatizados. Va en tu criterio aplicarlo seg&#250;n tus circunstancias y la din&#225;mica de tu equipo. </p><p>Entender principios y patrones de dise&#241;o te ayudar&#225; a ser un mejor desarrollador RPA y a construir robots de mejor calidad. </p><p>Si est&#225;s reci&#233;n comenzando, escrib&#237; una gu&#237;a que te puede servir &#128071;</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:104782876,&quot;url&quot;:&quot;https://blog.robotipy.com/p/como-mejorar-como-rpa-developer&quot;,&quot;publication_id&quot;:1374548,&quot;publication_name&quot;:&quot;Robotipy&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;title&quot;:&quot;C&#243;mo mejorar como RPA Developer &#129302; &quot;,&quot;truncated_body_text&quot;:&quot;Hey, por ac&#225; Danilo&#128075; Bienvenido a la primera edici&#243;n de Robotipy. En esta ocaci&#243;n te cuento desde mi perspectiva como desarrollador de software y desarrollador RPA, 5 puntos que debes saber para emp&#8230;&quot;,&quot;date&quot;:&quot;2023-07-10T14:00:43.063Z&quot;,&quot;like_count&quot;:10,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;handle&quot;:&quot;danilotoro&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-02-02T12:24:12.518Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1335863,&quot;user_id&quot;:126820709,&quot;publication_id&quot;:1374548,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:false,&quot;publication&quot;:{&quot;id&quot;:1374548,&quot;name&quot;:&quot;Robotipy&quot;,&quot;subdomain&quot;:&quot;danilotoro&quot;,&quot;custom_domain&quot;:&quot;blog.robotipy.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Automatizaci&#243;n robotica y python&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png&quot;,&quot;author_id&quot;:126820709,&quot;theme_var_background_pop&quot;:&quot;#9D6FFF&quot;,&quot;created_at&quot;:&quot;2023-02-02T12:24:16.765Z&quot;,&quot;rss_website_url&quot;:null,&quot;email_from_name&quot;:&quot;Danilo &#129302;&#128013; from Robotipy&quot;,&quot;copyright&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;founding_plan_name&quot;:&quot;Founding Member&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;}}],&quot;twitter_screen_name&quot;:&quot;DaniloToroL&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://blog.robotipy.com/p/como-mejorar-como-rpa-developer?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!whOo!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbcd19-860d-44ed-9de8-44efd530537b_368x368.png" loading="lazy"><span class="embedded-post-publication-name">Robotipy</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">C&#243;mo mejorar como RPA Developer &#129302; </div></div><div class="embedded-post-body">Hey, por ac&#225; Danilo&#128075; Bienvenido a la primera edici&#243;n de Robotipy. En esta ocaci&#243;n te cuento desde mi perspectiva como desarrollador de software y desarrollador RPA, 5 puntos que debes saber para emp&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">3 years ago &#183; 10 likes &#183; 2 comments &#183; Danilo Toro &#129302;&#128013;</div></a></div><div><hr></div><p>Y eso es todo por hoy! Si encontraste valor en este newsletter, considera alguna de estas cosas:</p><p><strong>1) Suscribete a mi newsletter</strong> &#8212; Si a&#250;n no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver m&#225;s sobre los beneficios dando clic ac&#225;:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>2) Lee con tus colegas</strong> &#8212; El mejor agradecimiento es tu recomendaci&#243;n. Comparte este art&#237;culo con tu compa&#241;ero que le pueda interesar y consigue membres&#237;as gratuitas a trav&#233;s del programa de referido</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post&quot;,&quot;text&quot;:&quot;Refer a friend&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/leaderboard?&amp;utm_source=post"><span>Refer a friend</span></a></p><p>Ten una gran semana! &#128640;</p><p>Danilo</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Logs en Rocketbot]]></title><description><![CDATA[Aprende a leer los logs de tu robot en Rocketbot]]></description><link>https://newsletter.robotipy.com/p/logs-en-rocketbot</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/logs-en-rocketbot</guid><dc:creator><![CDATA[Danilo Toro 🤖🐍]]></dc:creator><pubDate>Tue, 22 Aug 2023 12:51:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; Danilo &#128075;</p><p>Bienvenido a esta nueva edici&#243;n de Robotipy. En este art&#237;culo explicaremos como leer los logs de rocketbot, para que puedas entender los errores y puedas crear tus propios logs.</p><p>Si quieres recibir estas publicaciones desde tu correo electr&#243;nico, te invito a suscribirte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Una de las habilidades m&#225;s importantes y a la vez complicada al desarrollar, es saber como debuggear y resolver errores. Se dice que un programador pasa mas tiempo leyendo c&#243;digo que programando y en el mundo de RPA no es tan diferente</p><h2>&#191;Que son los logs?</h2><p>Los logs son un registro de todas las actividades que realiza tu robot y se genera cada vez que se ejecuta. En estos registros se guarda informaci&#243;n de los comandos, errores y mensajes dejados por el desarrollador</p><blockquote><p>En inform&#225;tica, se usa el t&#233;rmino <strong>registro</strong>, <em><strong>log</strong></em> o <strong>historial de </strong><em><strong>log</strong></em> para referirse a la grabaci&#243;n secuencial en un <a href="https://es.wikipedia.org/wiki/Archivo_(inform%C3%A1tica)">archivo</a> o en una <a href="https://es.wikipedia.org/wiki/Base_de_datos">base de datos</a> de todos los acontecimientos (eventos o acciones) que afectan a un proceso particular (aplicaci&#243;n, actividad de una <a href="https://es.wikipedia.org/wiki/Red_inform%C3%A1tica">red inform&#225;tica</a>, etc.). De esta forma constituye una evidencia del comportamiento del sistema.</p><p>- <a href="https://es.wikipedia.org/wiki/Log_(inform%C3%A1tica)">Wikipedia</a></p></blockquote><p>En Rocketbot, leer los logs es bastante sencillo y tenemos varias formas para hacerlo, podemos leerlos desde:</p><ul><li><p>&#128223; Terminal de Rocketbot</p></li><li><p>&#128196; Archivo .log</p></li><li><p>&#128268;Addon Logs Viewer</p></li></ul><p>Los tres m&#233;todos muestran la misma informaci&#243;n. La diferencia es la forma en la que accedes a cada uno y como te muestra la informaci&#243;n.</p><h2>Logs de Rocketbot</h2><p>Los logs de rocketbot se guardan en la carpeta <em>rocketbot/logs</em> y se separan en diferentes carpetas seg&#250;n la fecha de creaci&#243;n del archivo. Dentro de estas carpetas, encontrar&#225;s cada archivo nombrado seg&#250;n la hora de creaci&#243;n <em>log_yyyymmdd_hhmmss.log</em></p><p>Si abres cualquier log, ver&#225;s l&#237;neas como en la imagen de abajo donde cada l&#237;nea es un registro de la ejecuci&#243;n de cada comando.</p><blockquote><p>&#128161;Este post est&#225; basado en las versiones de Rocketbot 2023 o superior. Puede haber diferencias con versiones anteriores.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dYMa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dYMa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 424w, https://substackcdn.com/image/fetch/$s_!dYMa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 848w, https://substackcdn.com/image/fetch/$s_!dYMa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 1272w, https://substackcdn.com/image/fetch/$s_!dYMa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dYMa!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png" width="1200" height="292.5824175824176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:355,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:442305,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dYMa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 424w, https://substackcdn.com/image/fetch/$s_!dYMa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 848w, https://substackcdn.com/image/fetch/$s_!dYMa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 1272w, https://substackcdn.com/image/fetch/$s_!dYMa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc75cc8cb-3b88-4aaf-964b-1fdb34f1eedf_2661x648.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Cada registro o l&#237;nea dentro del archivo .log lo podemos dividir en 8 partes</p><ul><li><p>&#128359; Timestamp o fecha y hora de ejecuci&#243;n</p></li><li><p>&#128228; Origen del log &#8212; Este puede ser <em>Rocketbot</em> si es un log de un comando o <em>robot_message </em>si es un log generado por el robot</p></li><li><p>&#127898;&#65039;Tipo de log &#8212; Conocido tambi&#233;n como nivel de error. Permite diferenciar si es un mensaje de debug, un warning, error, etc. Puedes revisar en la documentaci&#243;n de python <a href="https://docs.python.org/3/library/logging.html#logging-levels">Loggin-level</a></p></li><li><p>&#129302; Nombre del robot ejecutado &#8212; Es el nombre del robot que contiene al comando que se est&#225; ejecutando</p></li><li><p>&#128207; Linea del comando en el robot &#8212; Es la l&#237;nea donde se encuentra el comando que se ejecuta, tomando en cuenta el nivel de anidaci&#243;n</p></li><li><p>&#127991;&#65039;Grupo y Nombre interno del comando &#8212; Ac&#225; se indica el nombre y secci&#243;n a nivel interno de rocketbot. El identificador que tiene rocketbot para sus servicios y comandos. Por ejemplo</p><ul><li><p><code>rpaweb : sendkeyweb &#8212; secci&#243;n web : comando enviar texto web</code></p></li></ul></li><li><p>&#129706; Identificador del comando en el robot &#8212; Este es el identificador &#250;nico del comando dentro del robot. Es un uuid que te permite encontrar un comando espec&#237;fico</p></li><li><p>&#127899;&#65039; Par&#225;metros, datos e informaci&#243;n del comando &#8212; Esta parte del log es variable y depende de la informaci&#243;n del comando a ejecutar. La mayor&#237;a de los m&#243;dulos muestran su informaci&#243;n en formato diccionario de python y algunos comandos nativos lo muestran secuencial. Por ejemplo</p><ul><li><p>El comando abrir navegador muestra primero el navegador que se abrir&#225; y luego un diccionario con los par&#225;metros ingresados:<br><code>chrome - {"url":"https://blog.robotipy.com/p/como-mejorar-como-rpa-developer","id_driver":"","profile":""}</code></p></li><li><p>El comando limpiar variables muestra un diccionario con todos los par&#225;metros incluido el nombre del m&#243;dulo y el identificador del comando:<br><code>{"module_name":"System++","module":"cleanVars","vars":"Iterable_Csv"}</code></p></li></ul></li></ul><h3>Logs en la Terminal de Rocketbot</h3><p>La terminal de rocketbot nos muestra m&#225;s informaci&#243;n que solo los logs, por lo que es importante conocer como funciona</p><p>La terminal de Rocketbot es esa ventana negra que se abre cuando ejecutas la aplicaci&#243;n o ejecutas un robot.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5H0I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5H0I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 424w, https://substackcdn.com/image/fetch/$s_!5H0I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 848w, https://substackcdn.com/image/fetch/$s_!5H0I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 1272w, https://substackcdn.com/image/fetch/$s_!5H0I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5H0I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png" width="594" height="333.1944684528954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:649,&quot;width&quot;:1157,&quot;resizeWidth&quot;:594,&quot;bytes&quot;:65205,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5H0I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 424w, https://substackcdn.com/image/fetch/$s_!5H0I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 848w, https://substackcdn.com/image/fetch/$s_!5H0I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 1272w, https://substackcdn.com/image/fetch/$s_!5H0I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ef4c860-6621-4bcf-ad74-f5df6dff8af7_1157x649.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>La informaci&#243;n en esta terminal la podemos dividir en dos partes. </p><ol><li><p>Informaci&#243;n de Studio &#8212; Al iniciar, muestra informaci&#243;n de la configuraci&#243;n de Rocketbot como el puerto, la ruta de los logs o informaci&#243;n de tu licencia. Y mientras vas interactuando con Studio, va mostrando informaci&#243;n, como el robot guardado, los robots exportados, etc</p></li><li><p>Informaci&#243;n de la ejecuci&#243;n &#8212; Cuando ejecutas un robot, la terminal muestra ademas del log de cada comando, otro tipo de informaci&#243;n, como el tiempo que demora en ejecutar el robot, warning generados por alguna librer&#237;a de python, mensajes de debug de alg&#250;n comando, entre otras cosas</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8LTt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8LTt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 424w, https://substackcdn.com/image/fetch/$s_!8LTt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 848w, https://substackcdn.com/image/fetch/$s_!8LTt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 1272w, https://substackcdn.com/image/fetch/$s_!8LTt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8LTt!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png" width="1200" height="204.3956043956044" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:248,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:50470,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8LTt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 424w, https://substackcdn.com/image/fetch/$s_!8LTt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 848w, https://substackcdn.com/image/fetch/$s_!8LTt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 1272w, https://substackcdn.com/image/fetch/$s_!8LTt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05b890ad-18e8-4b26-a919-35e8f8df38bd_1839x313.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3>Addon Log Viewer</h3><p>Otra forma de visualizar los logs, es utilizando la extensi&#243;n o addon llamado Logs Viewer. Esta extensi&#243;n se encuentra en la secci&#243;n de Addons, en la parte derecha de Rocketbot</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6D8_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6D8_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 424w, https://substackcdn.com/image/fetch/$s_!6D8_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 848w, https://substackcdn.com/image/fetch/$s_!6D8_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 1272w, https://substackcdn.com/image/fetch/$s_!6D8_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6D8_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png" width="255" height="430.36842105263156" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:481,&quot;width&quot;:285,&quot;resizeWidth&quot;:255,&quot;bytes&quot;:14100,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6D8_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 424w, https://substackcdn.com/image/fetch/$s_!6D8_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 848w, https://substackcdn.com/image/fetch/$s_!6D8_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 1272w, https://substackcdn.com/image/fetch/$s_!6D8_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e6fea3-25f6-4963-9b68-20906cd0cc28_285x481.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Si das click en la extensi&#243;n, se abrir&#225; una nueva pesta&#241;a en el navegador con todos los logs separados por carpeta, de igual forma como se encuentra en la carpeta logs, ordenados desde el &#250;ltimo al m&#225;s antiguo. </p><p>Esta extensi&#243;n, te permite ver cada tipo de log con diferentes colores para que puedas visualizar de forma r&#225;pida los errores o los logs generados por tu robot. Adem&#225;s, cuenta con dos botones para exportarlo como archivo xlsx y otro para abrir la carpeta logs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oqVB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oqVB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 424w, https://substackcdn.com/image/fetch/$s_!oqVB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 848w, https://substackcdn.com/image/fetch/$s_!oqVB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 1272w, https://substackcdn.com/image/fetch/$s_!oqVB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oqVB!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png" width="832" height="410.85714285714283" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:719,&quot;width&quot;:1456,&quot;resizeWidth&quot;:832,&quot;bytes&quot;:134618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oqVB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 424w, https://substackcdn.com/image/fetch/$s_!oqVB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 848w, https://substackcdn.com/image/fetch/$s_!oqVB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 1272w, https://substackcdn.com/image/fetch/$s_!oqVB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb81813-5fac-4952-96b8-d08cfc299587_1920x948.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Esta forma tiene la desventaja que no se actualiza en tiempo real, por lo que necesitas recargar la p&#225;gina cuando finalice la ejecuci&#243;n de tu robot</p><blockquote><p>&#128587;&#8205;&#9794;&#65039;Si te interesa que haga un v&#237;deo de como crear tus propios addons para Rocketbot Studio, dejame un comentario diciendo &#8220;Me interesa crear un addon&#8221;</p></blockquote><h2>Como crear un log personalizado</h2><p>Desde la versi&#243;n 2023.03.20, ya no necesitas crear tus propios m&#243;dulos de logs o subrobots para crear mensajes de logs personalizados en tus robot. </p><p>Con el comando <strong>Mensaje Log</strong>, puedes agregar informaci&#243;n a los logs de Rocketbot y as&#237; tener en un solo lugar tus registros o checkpoints con la informaci&#243;n de los comandos ejecutados.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IUQU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IUQU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 424w, https://substackcdn.com/image/fetch/$s_!IUQU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 848w, https://substackcdn.com/image/fetch/$s_!IUQU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 1272w, https://substackcdn.com/image/fetch/$s_!IUQU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IUQU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png" width="708" height="795.6237623762377" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:908,&quot;width&quot;:808,&quot;resizeWidth&quot;:708,&quot;bytes&quot;:77068,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IUQU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 424w, https://substackcdn.com/image/fetch/$s_!IUQU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 848w, https://substackcdn.com/image/fetch/$s_!IUQU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 1272w, https://substackcdn.com/image/fetch/$s_!IUQU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe77eac82-1a7d-4e4c-b1bb-3c1961169cf1_808x908.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>El comando Mensaje Log se encuentra en la secci&#243;n Sistema y recibe solo dos par&#225;metros para funcionar</p><ul><li><p>Mensaje &#8212; El mensaje de que quieres escribir en los logs. Puede ser un texto o una variable</p></li><li><p>Nivel &#8212; El tipo de log que quieres que se muestre. Los niveles disponibles pueden ser :</p><ul><li><p><strong>trace</strong>: Utilizado para informaci&#243;n detallada de depuraci&#243;n</p></li><li><p><strong>info</strong>: Utilizado para proporcionar informaci&#243;n general sobre la ejecuci&#243;n del programa</p></li><li><p><strong>warn</strong>: Se utiliza para resaltar posibles problemas o advertencias</p></li><li><p><strong>error</strong>: Utilizado para registrar errores que se producen durante la ejecuci&#243;n del programa</p></li><li><p><strong>fatal</strong>: Se utiliza para registrar errores cr&#237;ticos que conducen a la finalizaci&#243;n del programa</p></li></ul></li></ul><p>Al ejecutarse este comando, ver&#225;s en los logs lo siguiente:</p><p><em>2023-08-22 00:22:08.100640 - rocketbot - INFO - request: test2 : line 2 - rpasystem : log_message &nbsp;id: 05886cd5-7a45-47f7-76eb-e95eb4590f72 - warn - Los archivos no se encuentran en la carpeta principal<br>2023-08-22 00:22:08.101642 - robot_message - WARN - Los archivos no se encuentran en la carpeta principal</em></p><h2>Como guardar el error en una varible</h2><p>En algunos casos podr&#237;as necesitas el mensaje del error que ocurre, ya sea para enviarlo por alg&#250;n medio o tomar una decisi&#243;n dentro de un catch.</p><p>En Rocketbot no tienes un comando para extraer el error literal, sino que puedes obtener el &#250;ltimo status reportado por un comando y este contendr&#225; el mensaje del error</p><div class="pullquote"><p>{'status': 'False', 'message': 'SystemError: Ha ocurrido un error en el robot', 'img': '', 'vars': [], 'ifs': [], 'extra': [], 'time': '0.00956273078918457'}</p></div><p> Para poder obtener el status, puedes usar alguna de estas dos formas</p><h3>Uso de variable interna</h3><p>Con el comando asignar variable puedes utilizar la variable interna <em>rocketbot_last_status.</em></p><p>Para poder utilizarla tienes que escribirla entre simbolos de porcentajes y en el campo de <em>Asignar resultado a varia</em>ble<em> </em>tienes que indicar el nombre de la variable donde guardar el mensaje con el error (o el &#250;ltimo status)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vpzg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vpzg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 424w, https://substackcdn.com/image/fetch/$s_!Vpzg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 848w, https://substackcdn.com/image/fetch/$s_!Vpzg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 1272w, https://substackcdn.com/image/fetch/$s_!Vpzg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vpzg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png" width="458" height="296.11572327044024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:514,&quot;width&quot;:795,&quot;resizeWidth&quot;:458,&quot;bytes&quot;:23007,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vpzg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 424w, https://substackcdn.com/image/fetch/$s_!Vpzg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 848w, https://substackcdn.com/image/fetch/$s_!Vpzg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 1272w, https://substackcdn.com/image/fetch/$s_!Vpzg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe90e077e-5fc6-4f27-b545-a8c53c73b32d_795x514.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Comando obtener &#250;ltimo status</h3><p>En este comando solo tienes que ingresar la variable donde quieres guardar el &#250;ltimo status reportado por el comando y ya puedes acceder al mensaje del error.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!va0z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!va0z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 424w, https://substackcdn.com/image/fetch/$s_!va0z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 848w, https://substackcdn.com/image/fetch/$s_!va0z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 1272w, https://substackcdn.com/image/fetch/$s_!va0z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!va0z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png" width="505" height="448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:448,&quot;width&quot;:505,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19394,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!va0z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 424w, https://substackcdn.com/image/fetch/$s_!va0z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 848w, https://substackcdn.com/image/fetch/$s_!va0z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 1272w, https://substackcdn.com/image/fetch/$s_!va0z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70bb072a-84b4-4df6-b5d2-dbc6631d6331_505x448.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div><hr></div><p>Y eso es todo por hoy! Si te gustar&#237;a que escriba sobre algo en particular, cre&#233; un chat donde podemos conversar y puedes comentarme cuales son los temas que te interesan. Estar&#233; escribiendo sobre los temas comentados en las siguientes ediciones</p><div class="community-post" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/chat/posts/ce52cd9e-d555-4078-9c1c-0148cf4ce241?utm_source=thread_embed&quot;,&quot;postId&quot;:&quot;ce52cd9e-d555-4078-9c1c-0148cf4ce241&quot;,&quot;communityPost&quot;:{&quot;id&quot;:&quot;ce52cd9e-d555-4078-9c1c-0148cf4ce241&quot;,&quot;publication_id&quot;:1374548,&quot;body&quot;:&quot;Hola a todos! &#128075;\nAbro este hilo para que comenten sobre que temas les interesar&#237;a que escriba en futuras ediciones.\nSi quieres aprender de algo en particular y puedo ayudarte, me gustar&#237;a que me comentaras&#128071;&quot;,&quot;audience&quot;:&quot;all_subscribers&quot;,&quot;type&quot;:&quot;text&quot;,&quot;media_assets&quot;:[],&quot;link_url&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:126820709,&quot;name&quot;:&quot;Danilo Toro &#129302;&#128013;&quot;,&quot;handle&quot;:&quot;danilotoro&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2bfca6-2d26-4fb4-8119-c5ef192ec30a_400x400.jpeg&quot;,&quot;bio&quot;:&quot;Full Stack Developer &#128013; RPA expert &#129302;https://t.co/ejgydT2qad &#128640;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-02-02T12:24:12.518Z&quot;}}" data-component-name="CommunityPostPlaceholder"></div>]]></content:encoded></item><item><title><![CDATA[Guía de Expresiones Regulares (Regex) con Ejemplos Prácticos]]></title><description><![CDATA[Una de las habilidades que todo desarrollador RPA deber&#237;a aprender para manipular textos]]></description><link>https://newsletter.robotipy.com/p/expresiones-regulares</link><guid isPermaLink="false">https://newsletter.robotipy.com/p/expresiones-regulares</guid><dc:creator><![CDATA[Daniela Zuñiga]]></dc:creator><pubDate>Tue, 01 Aug 2023 15:30:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!u9Pi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola, por ac&#225; Daniela &#128075;</p><p>Bienvenido a una nueva edici&#243;n de Robotipy. En este post finalmente aprender&#225;s como manipular textos utilizando expresiones regulares.</p><p>Si quieres recibir estas publicaciones desde tu correo electr&#243;nico, te invito a suscribirte.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Algo que la mayor&#237;a de los programadores coinciden sobre las expresiones regulares es que parece ser horrible y da miedo, pero una vez que lo aprendes adquieres un superpoder.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u9Pi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u9Pi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u9Pi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u9Pi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u9Pi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u9Pi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg" width="418" height="430.409375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:659,&quot;width&quot;:640,&quot;resizeWidth&quot;:418,&quot;bytes&quot;:71624,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u9Pi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u9Pi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u9Pi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u9Pi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f44b1a-d513-4e3f-9bdc-fd0230f67a5a_640x659.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A&#250;n no soy experta ni se todo sobre regex, pero luego de estar unos meses batallando extrayendo informaci&#243;n de diferentes PDFs, he decidido escribir esta gu&#237;a con lo que he aprendido.</p><p>As&#237; que, en este articulo, explicar&#233; que son las expresiones regulares ense&#241;ando ejemplos y casos de uso. Adem&#225;s te mostrar&#233; un ejemplo de como aplicarlo en Python.</p><h2>&#191;Qu&#233; son las Expresiones regulares (RegEx)?</h2><p>Considerando que un texto es una secuencia de caracteres (letras, n&#250;meros y otros s&#237;mbolos), una expresi&#243;n regular es una forma de encontrar una secuencia de caracteres contenida en un texto que sigue un patr&#243;n espec&#237;fico.</p><blockquote><p>En c&#243;mputo te&#243;rico y teor&#237;a de lenguajes formales, una <strong>expresi&#243;n regular</strong>, tambi&#233;n son conocidas como <strong>regex</strong> o <strong>regexp</strong>,<sup> </sup>por su contracci&#243;n del ingl&#233;s <em><strong>reg</strong>ular <strong>ex</strong>pression</em>, <em>es una secuencia de caracteres que conforma un patr&#243;n de b&#250;squeda</em>. Se utilizan principalmente para la b&#250;squeda de patrones de cadenas de caracteres u operaciones de sustituciones.</p><p>Fuente: <a href="https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular">Wikipedia</a></p></blockquote><p>Las expresiones regulares son soportadas en la mayor&#237;a de los lenguajes de programaci&#243;n, editores de texto e incluso las podemos utilizar en Word.</p><h2>Aplicaciones de las expresiones regulares</h2><ol><li><p><strong>&#128269;B&#250;squeda de texto</strong>: Encontrar todas las coincidencias de una cadena de texto espec&#237;fica en un documento.</p></li><li><p><strong>&#9989;Validar patrones</strong>: En un formulario definir el formato de un correo electr&#243;nico, n&#250;mero de celular, documento de identidad y evaluar si el formato ingresado por el usuario es v&#225;lido. </p></li><li><p><strong>&#9935;&#65039;Extracci&#243;n de informaci&#243;n</strong>: Extraer informaci&#243;n de un documento, como correos electr&#243;nicos, datos de una factura, etc.</p></li><li><p><strong>&#129309;Reemplazo de texto</strong>: Mediante regex reemplazar r&#225;pidamente todas las coincidencias en un texto.</p></li></ol><h2>Como leer y escribir expresiones regulares</h2><p>Para aprender a escribir expresiones regulares, tienes que entender el significado de los caracteres que contiene. Si vas a <a href="https://regex101.com/">Regex101</a> ver&#225;s que existen un mont&#243;n de simbolos y grupos que podr&#237;an abrumarte, mejor empecemos con los m&#225;s &#250;tiles</p><blockquote><p>&#128161;No necesitas aprenderte todo de memoria, puedes volver a esta gu&#237;a cada vez que lo necesites</p></blockquote><h3>1. Caracteres literales</h3><p>Los caracteres m&#225;s simples en una RegEx son los caracteres literales, ya que su significado es el mismo que utilizamos cuando leemos un documento. </p><p>Los caracteres literales son las letras, n&#250;meros y algunos simbolos que no tienen un significado especial. Son case sensitive, lo que quiere decir que una letra en may&#250;sculas no es lo mismo que una letra en min&#250;sculas <em>A != a</em></p><p>Si queremos buscar la palabra RPA en un documento, escribiremos lo siguiente</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wh6S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wh6S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 424w, https://substackcdn.com/image/fetch/$s_!Wh6S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 848w, https://substackcdn.com/image/fetch/$s_!Wh6S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 1272w, https://substackcdn.com/image/fetch/$s_!Wh6S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wh6S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png" width="563" height="259.07964601769913" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03e0f43a-924e-499e-93e2-136042d88c33_565x260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:260,&quot;width&quot;:565,&quot;resizeWidth&quot;:563,&quot;bytes&quot;:15215,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wh6S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 424w, https://substackcdn.com/image/fetch/$s_!Wh6S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 848w, https://substackcdn.com/image/fetch/$s_!Wh6S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 1272w, https://substackcdn.com/image/fetch/$s_!Wh6S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03e0f43a-924e-499e-93e2-136042d88c33_565x260.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>2. Metacaracteres</h3><p>Los metacaracteres son caracteres que tienen un significado especial en Regex. Pueden tener uno o m&#225;s significados y nos ayudar&#225;n a agregar reglas a nuestras b&#250;squedas. </p><div class="pullquote"><p> .  ^  $  *  +  ?  {  }  [  ]  \  |  (  ) </p></div><p>Estos metacaracteres pueden clasificarse en los siguientes grupos:</p><h4><strong>Comod&#237;n (.)</strong></h4><p>Este metacaracter se utiliza para reemplazar cualquier otro caracter y se simboliza con un punto <code>"." </code></p><p>En el ejemplo a continuaci&#243;n, se utiliza para encontrar en cada frase, cualquier palabra que empiece con c, luego siga cualquier caracter, continua con una s y despu&#233;s nuevamente cualquier caracter</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JbOn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JbOn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 424w, https://substackcdn.com/image/fetch/$s_!JbOn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 848w, https://substackcdn.com/image/fetch/$s_!JbOn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 1272w, https://substackcdn.com/image/fetch/$s_!JbOn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JbOn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png" width="580" height="308.56512141280353" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:482,&quot;width&quot;:906,&quot;resizeWidth&quot;:580,&quot;bytes&quot;:43964,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JbOn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 424w, https://substackcdn.com/image/fetch/$s_!JbOn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 848w, https://substackcdn.com/image/fetch/$s_!JbOn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 1272w, https://substackcdn.com/image/fetch/$s_!JbOn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88112dbf-dd93-4205-86bc-0e43ea4c5278_906x482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Escape de Secuencia (\)</h4><p>Este metacaracter se utiliza para cambiar el significado del caracter que le contin&#250;a y se utiliza el simbolo slash<em> </em>invertido <em>"\"</em>.</p><p>Si es un <strong>caracter especial</strong>, <strong>lo convierte en un caracter literal </strong>y lo mismo al rev&#233;s. Si es un<strong> caracter literal, lo convierte en un caracter especial.</strong></p><p>Si se agrega un \ al caracter especial del ejemplo anterior, este deja de ser un comod&#237;n y adquiere su significado literal, por lo tanto, ya no ecuentra coincidencia en las palabras cosa o casa, pero si lo hace con c.s.</p><blockquote><p>El car&#225;cter especial . (punto) ahora tiene un significado literal. Solo es un punto</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mYO8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mYO8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 424w, https://substackcdn.com/image/fetch/$s_!mYO8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 848w, https://substackcdn.com/image/fetch/$s_!mYO8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 1272w, https://substackcdn.com/image/fetch/$s_!mYO8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mYO8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png" width="594" height="276.1404682274248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:417,&quot;width&quot;:897,&quot;resizeWidth&quot;:594,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!mYO8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 424w, https://substackcdn.com/image/fetch/$s_!mYO8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 848w, https://substackcdn.com/image/fetch/$s_!mYO8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 1272w, https://substackcdn.com/image/fetch/$s_!mYO8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F971f8168-aaff-4bd1-a999-7c9d5622eb42_897x417.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>En cambio, si al ejemplo del comod&#237;n se le agrega un slash invertido (\) a la letra <em>s</em>, esta pierde su significado literal y adquiere un significado especial. En este caso, representa un espacio (\s = space)</p><blockquote><p>La s deja de ser literal una s, ahora tiene otro significado (un espacio)</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PFii!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PFii!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 424w, https://substackcdn.com/image/fetch/$s_!PFii!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 848w, https://substackcdn.com/image/fetch/$s_!PFii!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 1272w, https://substackcdn.com/image/fetch/$s_!PFii!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PFii!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png" width="899" height="402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:899,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33838,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PFii!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 424w, https://substackcdn.com/image/fetch/$s_!PFii!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 848w, https://substackcdn.com/image/fetch/$s_!PFii!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 1272w, https://substackcdn.com/image/fetch/$s_!PFii!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9ea7fd3-bb00-48d3-9c25-83e80871776d_899x402.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Algunos caracteres literales escapados que m&#225;s se utilizan.</p><ul><li><p>\w : B&#250;squeda de caracter alfanum&#233;rico, sirve para buscar un caracter de la "a" a la "z", de la "A" a la "Z", del 0 al 9, incluso un _ (guion bajo)</p></li><li><p>\d : B&#250;squeda de un d&#237;gito, n&#250;meros del 0 al 9.</p></li><li><p>\s : Coincide con un espacio en blanco.</p></li><li><p>\n: Representa los saltos de l&#237;nea</p></li><li><p>\t: Representa las tabulaciones</p></li></ul><blockquote><p>&#128161;Algunos de esos caracteres, al usarlos en may&#250;sculas, representan lo contrario, \W, \D, \S. Estos car&#225;cteres representan los NO alfanum&#233;ricos, NO digitos y NO espacios en blanco respectivamente</p></blockquote><h4><strong>Cuantificadores</strong></h4><p>Estos caracteres especifican cu&#225;ntas veces debe coincidir un caracter o grupo de caracteres.</p><ul><li><p><strong>*</strong> :  El asterisco indica que el caracter anterior al asterisco puede encontrarse cero, una o m&#225;s veces. En el ejemplo, \w* se lee como: <em>"Cualquier caracter alfanumerico repetido cero, una o m&#225;s veces"</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j_aC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j_aC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 424w, https://substackcdn.com/image/fetch/$s_!j_aC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 848w, https://substackcdn.com/image/fetch/$s_!j_aC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 1272w, https://substackcdn.com/image/fetch/$s_!j_aC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j_aC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png" width="849" height="497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:497,&quot;width&quot;:849,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43179,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j_aC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 424w, https://substackcdn.com/image/fetch/$s_!j_aC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 848w, https://substackcdn.com/image/fetch/$s_!j_aC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 1272w, https://substackcdn.com/image/fetch/$s_!j_aC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e11ed67-a3ab-43c3-95bb-60857618eb56_849x497.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>Notar que en las l&#237;neas sin texto, tambi&#233;n hace match, porque es un \w que no existe y el * encuentra desde cero, una o m&#225;s coincidencias</p></blockquote></li><li><p><strong>?</strong> : Este simbolo indica que el caracter anterior al ?, se puede encontrar una vez o no encontrarse, puede haber cero o uno. En el ejemplo, <em>\d{8}-?\d </em>se lee como: <em>"Ocho digitos, luego un gui&#243;n que puede estar o no, luego un digito"</em> </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MEjd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MEjd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 424w, https://substackcdn.com/image/fetch/$s_!MEjd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 848w, https://substackcdn.com/image/fetch/$s_!MEjd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 1272w, https://substackcdn.com/image/fetch/$s_!MEjd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MEjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png" width="884" height="371" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:371,&quot;width&quot;:884,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32729,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MEjd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 424w, https://substackcdn.com/image/fetch/$s_!MEjd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 848w, https://substackcdn.com/image/fetch/$s_!MEjd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 1272w, https://substackcdn.com/image/fetch/$s_!MEjd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c6f8b7b-393a-4368-be63-2b5008d08089_884x371.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li><li><p><strong>+</strong> : El s&#237;mbolo "m&#225;s", indica que el caracter que lo acompa&#241;a, tiene que existir al menos una vez, puede estar 1 o m&#225;s veces. El ejemplo se lee como: <em>"La palabra hol (o los caracteres h, o, l) seguido de una </em><code>a</code><em> que puede estar una o m&#225;s veces"</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cpfB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cpfB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 424w, https://substackcdn.com/image/fetch/$s_!cpfB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 848w, https://substackcdn.com/image/fetch/$s_!cpfB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 1272w, https://substackcdn.com/image/fetch/$s_!cpfB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cpfB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png" width="680" height="289" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00180d93-b5a1-4087-be07-73650e5c1017_680x289.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:289,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18322,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cpfB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 424w, https://substackcdn.com/image/fetch/$s_!cpfB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 848w, https://substackcdn.com/image/fetch/$s_!cpfB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 1272w, https://substackcdn.com/image/fetch/$s_!cpfB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00180d93-b5a1-4087-be07-73650e5c1017_680x289.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></li><li><p><strong>{N}</strong> : Los s&#237;mbolos <em>"{" y "}", </em> se utilizan para indicar la cantidad de veces que se tiene que repetir un caracter o un grupo de caracteres. Utilizando <em>{3} </em>indicamos que el caracter que le precede, se repite exactamente 3 veces.</p><p>En el ejemplo con "?", utilizamos {8} para indicar que los digitos se repiten 8 veces.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NEpd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NEpd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 424w, https://substackcdn.com/image/fetch/$s_!NEpd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 848w, https://substackcdn.com/image/fetch/$s_!NEpd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 1272w, https://substackcdn.com/image/fetch/$s_!NEpd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NEpd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png" width="687" height="326" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:326,&quot;width&quot;:687,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21981,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NEpd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 424w, https://substackcdn.com/image/fetch/$s_!NEpd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 848w, https://substackcdn.com/image/fetch/$s_!NEpd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 1272w, https://substackcdn.com/image/fetch/$s_!NEpd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a03952-7694-41af-8cf4-06dca721f7a7_687x326.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Si queremos indicar un n&#250;mero m&#237;nimo de veces, podemos agregar una coma luego del n&#250;mero <strong>{N,}</strong>: N o m&#225;s veces (donde N es un n&#250;mero). En el ejemplo, podemos utilizarlo en n&#250;meros de telefonos, donde puede haber 11 o m&#225;s digitos</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bjgu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bjgu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 424w, https://substackcdn.com/image/fetch/$s_!bjgu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 848w, https://substackcdn.com/image/fetch/$s_!bjgu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 1272w, https://substackcdn.com/image/fetch/$s_!bjgu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bjgu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png" width="681" height="270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:270,&quot;width&quot;:681,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bjgu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 424w, https://substackcdn.com/image/fetch/$s_!bjgu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 848w, https://substackcdn.com/image/fetch/$s_!bjgu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 1272w, https://substackcdn.com/image/fetch/$s_!bjgu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d3a26dd-c4dd-4e5d-9522-ca0987e780a9_681x270.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>y si quisieramos indicar un rango, podemos agregar un n&#250;mero antes de cerrar la llave <strong>{N,M}</strong>: Entre N y M n&#250;mero de veces (donde N y M son n&#250;meros y N &lt; M)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lZIy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lZIy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 424w, https://substackcdn.com/image/fetch/$s_!lZIy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 848w, https://substackcdn.com/image/fetch/$s_!lZIy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 1272w, https://substackcdn.com/image/fetch/$s_!lZIy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lZIy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png" width="678" height="298" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298,&quot;width&quot;:678,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25690,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lZIy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 424w, https://substackcdn.com/image/fetch/$s_!lZIy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 848w, https://substackcdn.com/image/fetch/$s_!lZIy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 1272w, https://substackcdn.com/image/fetch/$s_!lZIy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a7a71e-f6b1-460f-abd4-7b2f6656aa44_678x298.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><h4>Otros metacaracteres</h4><ul><li><p><strong>|</strong> : Significa alternancia u "o" , se utiliza para encontrar un valor u otro, ejemplo &#8220;a&#8221; o &#8220;b&#8221;. </p></li></ul><h3>3. Clases</h3><p>Las clases son una forma de definir un conjunto de caracteres que deseas encontrar y son creadas con la ayuda de "[ ]" . Estos buscan un car&#225;cter que cumpla con lo que este dentro de los corchetes. Podemos leerlo como un "o" multiple</p><blockquote><p>Por ejemplo: </p><ul><li><p>[abc] : quiere decir que el car&#225;cter a buscar puede ser "a", "b" o "c".</p></li></ul><p>Tambi&#233;n podemos definir rangos de b&#250;squeda utilizando el gui&#243;n "-"</p><ul><li><p>[0-6] : representa todos los n&#250;meros del 0 al 6.</p></li><li><p>[A-Z] : busca todos los caracteres desde la &#8220;A&#8221; a la &#8220;Z&#8221; en may&#250;sculas.</p></li></ul></blockquote><p>Las clases son &#250;tiles cuando necesitamos que nuestra expresi&#243;n pueda encontrar un caracter que puede tener diferentes valores.</p><p>Supongamos que necesitas extraer los colores en formato hexadecimal de un texto, este formato puede contener n&#250;meros del 0 al 9 y letras de la A a la F, por lo tanto utilizaremos el siguiente regex &#8212; <code>#[A-F\d]{3,6}</code> &#8212;<em> </em>Le&#237;do en lenguaje humano ser&#237;a: <em>"Una secuencia que comience con #, luego cualquier caracter que sea A, B, C, D, E, F o digito y que este se repita 3, 4, 5 o 6 veces"</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rqp1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rqp1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 424w, https://substackcdn.com/image/fetch/$s_!Rqp1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 848w, https://substackcdn.com/image/fetch/$s_!Rqp1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 1272w, https://substackcdn.com/image/fetch/$s_!Rqp1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rqp1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png" width="713" height="312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:312,&quot;width&quot;:713,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31508,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Rqp1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 424w, https://substackcdn.com/image/fetch/$s_!Rqp1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 848w, https://substackcdn.com/image/fetch/$s_!Rqp1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 1272w, https://substackcdn.com/image/fetch/$s_!Rqp1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e41c426-1e53-4e8b-a5ef-0d6ec11dfbd1_713x312.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Negaci&#243;n de clases</h4><p>Al igual que con las metacaracteres, en las clases podemos "negar" o encontrar algo que signifique lo contrario a lo escrito utilizando el simbolo ^. Cuando utilizamos este caracter al inicio de una clase <code>"[]"</code> de caracteres niega la clase.</p><blockquote><p>Por ejemplo<code> [^a-z] </code>coincide con cualquier caracter que NO sea una letra min&#250;scula.</p></blockquote><h3>4. Grupos</h3><p>Los grupos, como su nombre lo indica, nos permiten agrupar un conjunto de caracteres dentro de mi expresi&#243;n regular, para poder extraer la parte especifica de la informaci&#243;n que me interesa.  Se definen con parentesis "<code>( )"</code>  y a diferencia de una clase, esta la podemos leer como un "y" multiple</p><p>En este ejemplo, tenemos un texto que es una lista de blogs con sus nombres, contenido y a&#241;o de publicaci&#243;n y solo nos interesa obtener el nombre especifico del blog.</p><blockquote><p>Sabemos que el nombre viene despues de la palabra &#8220;Nombre: &#8221; por lo tanto nuestra expresi&#243;n regular debe empezar de esa forma, seguido de <code>\w*</code> que representa un conjunto de cero o mas caracteres (tambi&#233;n puedes usar <code>\w+</code>), pero como solo queremos extraer el nombre del blog sin la palabra inicial "Nombre: " creamos un grupo cerr&#225;ndolo entre par&#233;ntesis <code>"( )"</code>.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gckC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gckC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 424w, https://substackcdn.com/image/fetch/$s_!gckC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 848w, https://substackcdn.com/image/fetch/$s_!gckC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 1272w, https://substackcdn.com/image/fetch/$s_!gckC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gckC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png" width="829" height="566" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:566,&quot;width&quot;:829,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72539,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gckC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 424w, https://substackcdn.com/image/fetch/$s_!gckC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 848w, https://substackcdn.com/image/fetch/$s_!gckC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 1272w, https://substackcdn.com/image/fetch/$s_!gckC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac4d424-3944-4b3e-9537-43eb5ed3bfbd_829x566.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>&#128064; Vemos que el Regex nos selecciona 2 grupos diferentes, el grupo 0 seria el Regex completo y el grupo 1 ser&#237;a el grupo espec&#237;fico descrito entre <code>&#8220;( )&#8221;</code>. </p></blockquote><p>Para extraer un grupo en especifico con lenguajes de programaci&#243;n como Python &#128013; puedes usar el siguiente c&#243;digo:  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gKID!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gKID!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 424w, https://substackcdn.com/image/fetch/$s_!gKID!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 848w, https://substackcdn.com/image/fetch/$s_!gKID!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 1272w, https://substackcdn.com/image/fetch/$s_!gKID!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gKID!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png" width="990" height="604" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:604,&quot;width&quot;:990,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78182,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gKID!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 424w, https://substackcdn.com/image/fetch/$s_!gKID!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 848w, https://substackcdn.com/image/fetch/$s_!gKID!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 1272w, https://substackcdn.com/image/fetch/$s_!gKID!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6e1d7c-eb66-44f3-856b-a859cb4ed78c_990x604.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5. Anclas</h3><p>Se utilizan para indicar el inicio y final de una l&#237;nea. </p><ul><li><p>^ :  Este car&#225;cter tiene doble funcionalidad que difiere cuando se utiliza individualmente y cuando se utiliza con una clase, como lo vimos anteriormente. </p><p>Se utiliza como un Startswith, o un "Comienza con" e indica el inicio de una texto</p></li><li><p><strong>$</strong> : Este caracter, como contraparte del anterior, representa el final de la texto.</p></li></ul><p>Cuando se utilizan en conjunto sirven para asegurar que la coincidencia es de la l&#237;nea completa. </p><blockquote><p><code>^Hola.* </code>: coincidir&#225; con cualquier cadena de texto que comience con &#8220;Hola&#8221;, por ejemplo, "<em>Hola, &#191;C&#243;mo est&#225;s?"</em>, pero no con <em>"&#191;Hola, est&#225;s?"</em>, porque el segundo caso &#8220;Hola no est&#225; al inicio de la cadena.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ziaC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ziaC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 424w, https://substackcdn.com/image/fetch/$s_!ziaC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 848w, https://substackcdn.com/image/fetch/$s_!ziaC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 1272w, https://substackcdn.com/image/fetch/$s_!ziaC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ziaC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png" width="723" height="279" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:279,&quot;width&quot;:723,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23335,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ziaC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 424w, https://substackcdn.com/image/fetch/$s_!ziaC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 848w, https://substackcdn.com/image/fetch/$s_!ziaC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 1272w, https://substackcdn.com/image/fetch/$s_!ziaC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff36b9f54-9da0-43fc-99dd-ba331a1a30c9_723x279.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><code>.*mundo$</code> : coincidir&#225; con cualquier cadena de texto que termine con "mundo". Por ejemplo, coincidir&#225; con "Hola, mundo" pero no con "Hola, mundo!" porque en el segundo caso "mundo" no est&#225; al final de la cadena.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9ngn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9ngn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 424w, https://substackcdn.com/image/fetch/$s_!9ngn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 848w, https://substackcdn.com/image/fetch/$s_!9ngn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 1272w, https://substackcdn.com/image/fetch/$s_!9ngn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9ngn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png" width="727" height="285" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:285,&quot;width&quot;:727,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21017,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9ngn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 424w, https://substackcdn.com/image/fetch/$s_!9ngn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 848w, https://substackcdn.com/image/fetch/$s_!9ngn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 1272w, https://substackcdn.com/image/fetch/$s_!9ngn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aee4e4d-a368-44c2-88f8-4c064aa8dd93_727x285.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><blockquote><p><code>^Hola.*mundo$</code>: Al utilizar ambos caracteres juntos, la expresi&#243;n solo coincidir&#225; con cadenas de texto que sean exactamente &#8220;Hola mundo&#8221;.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nPoX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nPoX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 424w, https://substackcdn.com/image/fetch/$s_!nPoX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 848w, https://substackcdn.com/image/fetch/$s_!nPoX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 1272w, https://substackcdn.com/image/fetch/$s_!nPoX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nPoX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png" width="719" height="309" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:309,&quot;width&quot;:719,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24543,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nPoX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 424w, https://substackcdn.com/image/fetch/$s_!nPoX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 848w, https://substackcdn.com/image/fetch/$s_!nPoX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 1272w, https://substackcdn.com/image/fetch/$s_!nPoX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1f35f0-c8ff-4343-b523-cac292bcb083_719x309.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Ejemplos de Expresiones regulares </h2><h3><strong>&#128241;N&#250;mero de tel&#233;fonos</strong></h3><p>Para los n&#250;meros de telefonos, tenemos que crear combinaciones de digitos que pueden contener o no espacios y puede contener o no un gui&#243;n. Viendo el caso de n&#250;mero m&#243;vil de Chile, tenemos que:</p><blockquote><ul><li><p>Creamos diferentes grupos <code>()</code> para extraer c&#243;digo de pa&#237;s, c&#243;digo de red (fija o m&#243;vil) y n&#250;mero de tel&#233;fono</p></li><li><p>Cada grupo puede estar o no separado por un espacio <code>\s?</code></p></li><li><p>Creamos un grupo de dos digitos para extraer el c&#243;digo del pa&#237;s <code>(\d\d)</code></p></li><li><p>Creamos un grupo para extraer el tipo de red, esta puede ser de uno o dos digitos <code>(\d{1,2})</code></p></li><li><p>Finalmente creamos un grupo para extraer el resto del n&#250;mero que puede ser de 8 o m&#225;s y puede contener un gui&#243;n <code>([0-9\-]{8,})</code></p></li></ul></blockquote><p><code>Chile: (\d\d)\s?(\d{1,2})\s?([0-9\-]{8,})</code></p><p><code>Colombia: (\d\d)\s?(\d{3})\s?([0-9\-]{7})</code></p><p><code>Argentina: (\d\d)\s?(\d)\s?([0-9]{4})\s?([0-9\-]{7})</code></p><p><code>M&#233;xico: (\d\d)\s?(\d)\s?([0-9]{2})\s?([0-9]{4})\s?([0-9]{4})</code></p><h3>&#128197; Fechas</h3><p>La mayor&#237;a de las fechas tienen el formado dd*mm*yyyy, donde * puede ser un punto, un gui&#243;n o un slash que separa el d&#237;a, mes y a&#241;o. Para extraer cada uno por separado, creamos un grupo por cada parte y los separadores los reemplazamos por un comod&#237;n </p><p><code>(\d\d).(\d\d).(\d\d\d\d)</code></p><h3>&#128231;Correos electr&#243;nicos</h3><p>Los correos electr&#243;nicos est&#225;n formados por 3 partes, el usuario, el @, el dominio.</p><blockquote><p>Para obtener el usuario construiremos una clase &#8220;[ ]&#8221; que :</p><ul><li><p>Contenga cualquier tipo de car&#225;cter alfanum&#233;rico (d&#237;gitos y/o letras) <code>[\w]</code></p></li><li><p>Puede tener contener ademas punto, gui&#243;n o gui&#243;n bajo <code>[\w\.-_]</code></p></li><li><p>Debe tener entre 5 y 30 caracteres <code>[\w\.-_]{5,30}</code></p></li><li><p>Opcionalmente puede o no contener un s&#237;mbolo mas "+" que debemos escapar con un \ ya que es un caracter especial <code>[\w\.-_]{5,30}\+?</code></p></li><li><p> Luego le puede seguir una palabra "\w" entre {0,10} caracteres </p><p><code>[\w\.-_]{5,30}\+?\w{0,10}</code></p></li></ul></blockquote><p>Para obtener el dominio tenemos que controlar 2 partes, el nombre y el TLD</p><blockquote><ul><li><p>El dominio lo extraemos con una clase <code>[] </code>que definir&#225; que el dominio puede ser cualquier caracter alfanum&#233;rico <code>\w</code>, un punto o un guion medio <code>[\w\.\-]</code></p></li><li><p>El dominio puede tener de 3 o m&#225;s caracteres <code>[\w\.\-]{3,}</code></p></li><li><p>Luego, va un un punto, seguido de 2 a 5 caracteres entre la &#8220;a&#8221; y la &#8220;z&#8221; min&#250;scula. <code>[\w\.\-]{3,}\.[a-z]{2,5}</code></p></li></ul></blockquote><p>Si unificamos todo en una sola expresi&#243;n regular separada por un arrob, tenemos lo siguiente</p><p><code>[\w\.-_]{5,30}\+?\w{0,10}@[\w\.\-]{3,}\.[a-z]{2,5}</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k03m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k03m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 424w, https://substackcdn.com/image/fetch/$s_!k03m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 848w, https://substackcdn.com/image/fetch/$s_!k03m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 1272w, https://substackcdn.com/image/fetch/$s_!k03m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k03m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png" width="659" height="465" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:465,&quot;width&quot;:659,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49038,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k03m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 424w, https://substackcdn.com/image/fetch/$s_!k03m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 848w, https://substackcdn.com/image/fetch/$s_!k03m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 1272w, https://substackcdn.com/image/fetch/$s_!k03m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1af5706c-2e1b-4c6f-96ae-95d02e6b122b_659x465.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>&#128279;URLs</h3><p>Las URLs son similares a los correos electronicos, pero en lugar de tener el usuario y el arroba, se tiene el protocolo</p><blockquote><ul><li><p>Primero creamos un grupo para el protocolo que puede terminar con s o no <code>(https?)</code></p></li><li><p>Luego viene dos puntos y dos slash que tenemos que escapar <code>(https?):\/\/</code></p></li><li><p>Algunos a&#250;n tienen el www, por lo que lo agregamos <code>(www.)?</code></p></li><li><p>Continuamos con el dominio, as&#237; que copiamos el ejemplo del dominio de los correos <code>[\w\.\-]{3,}\.[a-z]{2,5}</code></p></li><li><p>Finalemente, puede tener o no una subp&#225;gina<code> (\/\w+)?</code></p></li></ul></blockquote><p>Uninficando todo, tenemos lo siguiente</p><p><code>(https?):\/\/(www.)?[\w\.\-]{3,}\.[a-z]{2,5}(\/\w+)?</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wBGV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wBGV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 424w, https://substackcdn.com/image/fetch/$s_!wBGV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 848w, https://substackcdn.com/image/fetch/$s_!wBGV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 1272w, https://substackcdn.com/image/fetch/$s_!wBGV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wBGV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png" width="718" height="421" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:421,&quot;width&quot;:718,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54083,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wBGV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 424w, https://substackcdn.com/image/fetch/$s_!wBGV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 848w, https://substackcdn.com/image/fetch/$s_!wBGV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 1272w, https://substackcdn.com/image/fetch/$s_!wBGV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F089d27e4-f4d2-4c14-9852-52c9feed2101_718x421.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>&#128221;Logs</h3><p>Los logs dependen de la herramienta que uses as&#237; que en este ejemplo te mostrar&#233; como extraer los logs generados por rocketbot</p><div class="pullquote"><p><strong>2023-07-06 23:40:34.828902 - rocketbot - INFO - request: Robotipy : line 1 - rpalogic : evaluateIf &nbsp;id: 35035c05-d20d-0561-a87e-5aba8232171c - &nbsp;- True</strong></p></div><p>Rocketbot crea sus logs de la siguiente forma</p><blockquote><ul><li><p>Inicia con una timestamp (fecha y hora): <code>(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+)</code></p></li><li><p>Segundo, el origen del log (rocketbot o bot): <code>(\w+)</code></p></li><li><p>Tercero, el tipo de logs <em>(INFO, TRACE, ERROR, etc):  </em><code>(\w+)</code></p></li><li><p>Luego, despu&#233;s de "request:" viene el nombre del robot: <code>(request: \w+)</code></p></li><li><p>Sigue con la l&#237;nea del comando: <code>line ([\d\.]{1,})</code></p></li><li><p>Despu&#233;s la categor&#237;a : nombre del comando: <code>(\w+) : (\w+)</code></p></li><li><p>El id particular del comando en forma de uuid, luego de la palabra id: <code>id: ([a-zA-Z\d\-]{1,})</code></p></li><li><p>Finalmente, informaci&#243;n del comando que puede venir en diferentes formatos <code>(.*)</code></p></li></ul></blockquote><p>La expresi&#243;n regular para el log completo quedar&#237;a as&#237;:</p><p><code>(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+) - (\w+) - (\w+) - (request: \w+) : line ([\d\.]{1,}) - (\w+) : (\w+) &nbsp;id: ([a-zA-Z\d\-]{1,}) - &nbsp;- (.*)</code></p><h4>&#128179;DNI</h4><p>Si quieres validar DNI en formularios, puedes usar las siguientes expresiones regulares para Chile y Argentina</p><p>Chile &#8212;  <code>\d{1,2}.?\d{3}.?\d{3}-?\d</code></p><p>Argentina &#8212;<code> \d{1,2}.?\d{3}.?\d{3}</code></p><div><hr></div><p>Y eso es todo por hoy! Si conoces alguna otra expresi&#243;n regular &#250;til, escribirme un comentario para que todos podamos aprender.</p><p>Si encontraste valor en este newsletter, considera compartirlo con tu equipo &#10083;&#65039;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.robotipy.com/p/expresiones-regulares?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.robotipy.com/p/expresiones-regulares?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p>Ten una gran semana! &#128640;</p><p>Daniela</p><p></p><p></p>]]></content:encoded></item></channel></rss>