2 usuarios conectados

Extraer fecha. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada extraer_fecha_dma que tome una cadena de texto como entrada y devuelva la primera fecha encontrada en formato DD/MM/AAAA como una cadena, o None si no se encuentra ninguna fecha con ese formato.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Extraer fecha

📋 Copiar código


import re

def extraer_fecha_dma(texto):
  """
  Extrae la primera fecha encontrada en formato DD/MM/AAAA de un texto.

  Args:
    texto: La cadena de texto de entrada.

  Returns:
    La primera fecha encontrada en formato DD/MM/AAAA (str), o None si no se encuentra.
  """
  patron_fecha = re.compile(r'(\d{2})/(\d{2})/(\d{4})')
  coincidencia = patron_fecha.search(texto)
  if coincidencia:
    return coincidencia.group(0)
  else:
    return None

# Ejemplos de uso
texto1 = "Hoy es 15/05/2025."
resultado1 = extraer_fecha_dma(texto1)
print(f"Fecha en '{texto1}': {resultado1}")

texto2 = "El evento será el 20/06/2025."
resultado2 = extraer_fecha_dma(texto2)
print(f"Fecha en '{texto2}': {resultado2}")

texto3 = "No hay fecha aquí."
resultado3 = extraer_fecha_dma(texto3)
print(f"Fecha en '{texto3}': {resultado3}")

texto4 = "Una fecha incorrecta 1/5/2025."
resultado4 = extraer_fecha_dma(texto4)
print(f"Fecha en '{texto4}': {resultado4}")

texto5 = "Múltiples fechas: 10/01/2024 y 25/12/2025."
resultado5 = extraer_fecha_dma(texto5)
print(f"Fecha en '{texto5}': {resultado5}")

texto6 = "Formato diferente 2025-05-16."
resultado6 = extraer_fecha_dma(texto6)
print(f"Fecha en '{texto6}': {resultado6}")

texto7 = ""
resultado7 = extraer_fecha_dma(texto7)
print(f"Fecha en '': {resultado7}")

Explicación del Código:

  1. import re:

    • Importa el módulo re para trabajar con expresiones regulares.
  2. def extraer_fecha_dma(texto)::

    • Define una función llamada extraer_fecha_dma que toma una cadena de texto (texto) como entrada.
  3. patron_fecha = re.compile(r'(\d{2})/(\d{2})/(\d{4})'):

    • Compila una expresión regular para buscar fechas en el formato DD/MM/AAAA:
      • (\d{2}): Busca exactamente dos dígitos (para el día) y los captura en un grupo.
      • /: Busca el carácter literal '/'.
      • (\d{2}): Busca exactamente dos dígitos (para el mes) y los captura en otro grupo.
      • /: Busca el carácter literal '/'.
      • (\d{4}): Busca exactamente cuatro dígitos (para el año) y los captura en un grupo.
      • Los paréntesis () crean grupos de captura para el día, el mes y el año, aunque en este caso solo estamos interesados en la coincidencia completa.
  4. coincidencia = patron_fecha.search(texto):

    • Utiliza el método search() del objeto de expresión regular para buscar la primera ocurrencia del patrón de fecha en la cadena texto.
    • Si se encuentra una coincidencia, coincidencia será un objeto de coincidencia; de lo contrario, será None.
  5. if coincidencia::

    • Verifica si se encontró una coincidencia (es decir, si coincidencia no es None).
  6. return coincidencia.group(0):

    • Si se encontró una coincidencia, coincidencia.group(0) devuelve la cadena completa que coincidió con el patrón (en este caso, la fecha en formato DD/MM/AAAA).
  7. else::

    • Si no se encontró ninguna coincidencia.
  8. return None:

    • Devuelve None para indicar que no se encontró ninguna fecha en el formato especificado.

Ejemplos de Uso:

Los ejemplos muestran cómo la función extrae la primera fecha que encuentra en el formato DD/MM/AAAA. Si hay varias fechas o la fecha está en un formato diferente, no se extraerá (a menos que la primera coincida con el formato esperado).