Solución al Ejercicio: Convertir palabras a números del 0 al 10
📋 Copiar código
import re
def palabras_a_numeros_simple(texto):
"""
Reemplaza las palabras de los números del cero al diez con sus dígitos.
Args:
texto: La cadena de texto en español de entrada.
Returns:
La cadena con las palabras de los números reemplazadas por dígitos.
"""
mapeo_numeros = {
r'\bcero\b': '0',
r'\buno\b': '1',
r'\bdos\b': '2',
r'\btres\b': '3',
r'\bcuatro\b': '4',
r'\bcinco\b': '5',
r'\bseis\b': '6',
r'\bsiete\b': '7',
r'\bocho\b': '8',
r'\bnueve\b': '9',
r'\bdiez\b': '10'
}
texto_modificado = texto
for palabra, numero in mapeo_numeros.items():
texto_modificado = re.sub(palabra, numero, texto_modificado, flags=re.IGNORECASE)
return texto_modificado
# Ejemplos de uso
texto1 = "Tengo tres manzanas y dos naranjas."
resultado1 = palabras_a_numeros_simple(texto1)
print(f"'{texto1}' con números reemplazados: '{resultado1}'")
texto2 = "Cero es menor que cinco."
resultado2 = palabras_a_numeros_simple(texto2)
print(f"'{texto2}' con números reemplazados: '{resultado2}'")
texto3 = "Contamos hasta diez."
resultado3 = palabras_a_numeros_simple(texto3)
print(f"'{texto3}' con números reemplazados: '{resultado3}'")
texto4 = "Uno, dos, tres, probando."
resultado4 = palabras_a_numeros_simple(texto4)
print(f"'{texto4}' con números reemplazados: '{resultado4}'")
texto5 = "No hay números en letra aquí."
resultado5 = palabras_a_numeros_simple(texto5)
print(f"'{texto5}' con números reemplazados: '{resultado5}'")
texto6 = "El valor es seis."
resultado6 = palabras_a_numeros_simple(texto6)
print(f"'{texto6}' con números reemplazados: '{resultado6}'")
texto7 = "Diez Diez Diez"
resultado7 = palabras_a_numeros_simple(texto7)
print(f"'{texto7}' con números reemplazados: '{resultado7}'")
Explicación del Código:
-
Importa el módulo re
:
Se utiliza para realizar las sustituciones con expresiones regulares.
-
Función
palabras_a_numeros_simple(texto)
:
- Define un diccionario
mapeo_numeros
donde las claves son las palabras de los números
del cero al diez (usando \b
para asegurar que sean palabras
completas) y los valores son sus representaciones numéricas como
cadenas.
- Inicializa
texto_modificado
con el texto original.
- Itera a través del diccionario
mapeo_numeros
. Para cada palabra
(clave) y su
numero
(valor):
re.sub(palabra, numero,
texto_modificado, flags=re.IGNORECASE)
: Realiza la
sustitución de todas las ocurrencias de la palabra
por
el numero
en el texto_modificado
,
ignorando la capitalización (flags=re.IGNORECASE
).
- Devuelve la cadena
texto_modificado
con las palabras de los números reemplazadas.
Ejemplos de Uso:
Los ejemplos muestran cómo la función reemplaza
las palabras de los números del cero al diez por sus correspondientes dígitos en
diferentes frases en español.
Ten en cuenta que esta es una versión muy
limitada. Para manejar números más grandes (once, doce, veinte, cien, etc.) y
combinaciones (veintiuno, ciento cincuenta), se requeriría una lógica mucho más
compleja, posiblemente involucrando el análisis de la estructura gramatical de
los números escritos.