2 usuarios conectados

Convertir palabras a números del 0 al 10. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada palabras_a_numeros_simple que tome una cadena de texto en español como entrada y reemplace las palabras que representan los números del cero al diez con sus correspondientes dígitos numéricos.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. Importa el módulo re: Se utiliza para realizar las sustituciones con expresiones regulares.

  2. 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.