Mostrando entradas con la etiqueta Capítulo 2. Mostrar todas las entradas
Mostrando entradas con la etiqueta Capítulo 2. Mostrar todas las entradas

lunes, 21 de enero de 2019

Videoreceta Python No. 2-8: Diferencia entre Horas y Fechas

Videoreceta Python No. 2-7: Obtener la Hora y Fecha Actuales

Videoreceta Python No. 2-6: Generar Números Aleatorios

Videoreceta Python No. 2-5: Decimales con Precisión Arbitraria

Videoreceta Python No. 2-4: Formatear Números

martes, 1 de mayo de 2018

Receta Python 3 No. 2-20: Operaciones de Texto en Bytes de String

1. Problema

Ejecutar operaciones comunes de texto -e.g., búsqueda, reemplazo, remoción de caracteres) a nivel de los bytes de una cadena de caracteres.

2. Solución

En su defecto, Python ofrece soporte para la manipulación de cadenas de caracteres a nivel de bytes (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:

bytearray(b'Fyodor')
True
[bytearray(b'Fyodor'), bytearray(b'Dostoevskyiv')]
bytearray(b'Fyodor Dostoevsky')

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 27 de abril de 2018

Receta Python 3 No. 2-19: Escribir un Parser Recursivo

1. Problema

Parsear un texto conforme a unas reglas gramaticales.

2. Solución

Las reglas de la gramática para parsear el texto se especifican en BNF o EBNF.


Para el caso de expresiones aritméticas se puede tener una gramática como esta:
Gramática
Figura 1. Gramática parser.

3. Código Python 3

Para este ejemplo se usa la versión original del parser creado por Beazly y Jones (2013):


Archivo Python parser.py  [enlace alternativo]:


La clase ExpressionEvaluator (líneas 32-103) se encarga de crear el parser. Se apoya en el método generate_tokens() (líneas 24-29), el cual particiona o genera los tokens de la expresión dada. La invocación de este método se realiza por medio del método parse() (líneas 41-46).

Continuando, otros métodos sobresalientes son:

  • expr() (líneas 67-78): aplica la regla de expresiones de la aritmética; en este caso la suma y la resta.
  • term() (líneas 80-91): se encarga de reconocer los términos de la expresión.
  • factor() (líneas 93-103): reconoce las expresiones como números (literales) o expresiones encerradas entre paréntesis.
Prueba de ejecución:

2
5
14
37
('+', 2, 3)
('+', 2, ('*', 3, 4))
('+', 2, ('*', ('+', 3, 4), 5))
('+', ('+', 2, 3), 4)

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

jueves, 26 de abril de 2018

Receta Python 3 No. 2-18: Tokenizar Texto

1. Problema

Parsear una cadena de texto para obtener las partes integrales.

2. Solución

Por medio de expresiones regulares es posible establecer un mecanismo de tokenización  de texto (Beazly, Jones, 2013).

3. Código Python 3

Se parte de una cadena de caracteres que representa una sentencia en Python:

texto = "resultado = 13 + 43 * 5"


Luego se pretente generar las partes integrales de esa sentencia identificando operandos, operadores, variables, etc. Al final se pretende tener algo como esto:

tokens = [('NOMBRE', 'resultado'), ('EQUAL', '='), ('OPERANDO', '13'), ('SUMA', '+'), ('NUMERO', '43'), ('PRODUCTO', '*'), ('NUMERO', '5')]

Archivo Python tokenizar-texto.py [enlace alternativo]:

Prueba de ejecución:

<_sre.SRE_Match object; span=(0, 8), match='variable'>

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

miércoles, 25 de abril de 2018

Receta Python 3 No. 2-17: Manipular Entidades HTML y XML dentro de un Texto

1. Problema

Reemplazar entidades HTML o XML por las representacionese textuales.

2. Solución

El módulo html provee la funcionalidad requerida a través del método escape().

3. Código Python 3


Prueba de ejecución:

<strong>Python</strong> es un lenguaje de programación <em>interpretado</em>


<strong>Python</strong> es un lenguaje de programación <em>interpretado</em>

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

martes, 24 de abril de 2018

Receta Python 3 No. 2-16: Formatear el Texto de un Número Particular de Columnas

1. Problema

Formatear el texto de un número concreto de columnas.

2. Solución

El módulo textwrap provee funcionalidad para formatear y reformatear el texto hasta un número concreto de columnas (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:

A las demás personas que estaban en la taberna, sin excluir al tabernero, las
miraba con un gesto de desagrado, con una especie de altivo desdén, como a
personas que considerarse de una esfera y de una educación inferiores para que
mereciesen que él les dirigiera la palabra.

A las demás personas que estaban en la
taberna, sin excluir al tabernero, las
miraba con un gesto de desagrado, con
una especie de altivo desdén, como a
personas que considerarse de una esfera
y de una educación inferiores para que
mereciesen que él les dirigiera la
palabra.

    A las demás personas que estaban en
la taberna, sin excluir al tabernero,
las miraba con un gesto de desagrado,
con una especie de altivo desdén, como a
personas que considerarse de una esfera
y de una educación inferiores para que
mereciesen que él les dirigiera la
palabra.

A las demás personas que estaban en la
    taberna, sin excluir al tabernero,
    las miraba con un gesto de
    desagrado, con una especie de altivo
    desdén, como a personas que
    considerarse de una esfera y de una
    educación inferiores para que
    mereciesen que él les dirigiera la
    palabra.

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

lunes, 23 de abril de 2018

Receta Python 3 No. 2-15: Interpolar Variables en Cadenas de Caracteres

1. Problema

Interpolar variables en cadenas de caracteres.

2. Solución

En Python la interporlación de cadenas de caracteres funciona a partir de la expresión {nombre_variable}. Dentro de estos caracteres se especifica un nombre de variable que contendrá el valor a sustituir (Beazly, Jones, 2013).

3. Código Python 3

python = '¡{lenguaje} es {expresion}!'

print(python.format(lenguaje='Python', expresion='genial'))

Prueba de ejecución:


¡Python es genial!

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

domingo, 22 de abril de 2018

Receta Python 3 No. 2-14: Combinar y Concatenar Cadenas de Caracteres

1. Problema

Combinar y concatenar cadenas de caracteres.

2. Solución

El método join() permite concatenar un grupo de cadenas de caracteres en uno solo (Beazly, Jones, 2013).


La concatenación se puede realizar también con el operador + y el método format().

3. Código Python 3


Prueba de ejecución:


Python es un lenguaje de programación interpretado
Python es un lenguaje de programación interpretado

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

sábado, 21 de abril de 2018

Receta Python 3 No. 2-13: Alinear Cadenas de Caracteres

1. Problema

Alinear cadena de caracteres.

2. Solución

Las cadenas de caracteres cuentan con los métodos ljust(), rjust() y center() se usan para la alineación de texto.

3. Código Python 3


Prueba de ejecución:


OrtizOL             
             OrtizOL
      OrtizOL       

OrtizOL*************
*************OrtizOL

******OrtizOL*******

Esta tarea también se puede realizar con el método format(). Éste recibe como parámetros el texto a alinear y el tipo de alineación: %lt; (izquierda), %gt; "derecha", y ^ (centro).

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

viernes, 20 de abril de 2018

Receta Python 3 No. 2-12: Limpiar y Asegurar Texto

1. Problema

Limpiar y asegurar (sanitize) texto.

2. Solución

Existen soluciones básicas para la limpieza y aseguramiento de texto:
  • upper(),
  • lower(),
  • replace(),
  • re.sub()
Incluso se puede usar data.normalize(). Pero se puede ir más allá en este proceso y usar el método str.translate(). Este método recibe como parámetro un mapa para realizar cambios de caracteres en un texto (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:


pýtĥöñ is awesome

pýtĥöñ is awesome

pýtĥöñ is awesome


python is awesome

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O

jueves, 19 de abril de 2018

Receta Python 3 No. 2-11: Remover Caracteres de un Texto

1. Problema

Remover caracteres particulares de una cadena de caracteres.

2. Solución

Por medio de los métodos strip(), lstrip() y rstrip() es posible remover caracteres particulares de un texto. En su defecto, remueven caracteres de espacio al inicio y al final.


Esta tarea también se puede lograr por el método replace() y sub() (este último perteneciente al módulo re) (Beazly, Jones, 2013).

3. Código Python 3


Prueba de ejecución:


OrtizOL Blog
OrtizOL Blog   
  
    OrtizOL Blog
OrtizOLBlog


 OrtizOL Blog 

4. Literatura & Enlaces

Beazly D, Jones B. K. (2013). Python Cookbook, Third Edition. United States: O'Reilly Media.

O