import re #DOCUMENTO:DNI CAMPO:IDENTIFICACIÓN def buscarPatronCedula(lista_textos): for i, texto in enumerate(lista_textos): if texto and texto[0].isdigit() and '-' in texto: return i return 'error' #DOCUMENTO:DNI CAMPO:FECHA DE NACIMIENTO def obtener_fecha(texto): # El patrón busca: # - "FECHADENACIMIENTO" (insensible a mayúsculas/minúsculas) # - Seguido opcionalmente de CERO o MÁS caracteres que NO SEAN UN DÍGITO (lo que inicia la fecha). # Esto cubrirá ':', '.', espacios, o cualquier otro carácter de separación. # - Captura el patrón de fecha: \d{1,2}-[A-Za-z0-9]{3}-\d{4} patron = r"FECHADENACIMIENTO[^\d]*(\d{1,2}-[A-Za-z0-9]{3}-\d{4})" match = re.search(patron, texto, re.IGNORECASE) fecha_encontrada = None if match: fecha_encontrada = match.group(1) if fecha_encontrada: partes_fecha = fecha_encontrada.split('-') if len(partes_fecha) == 3: dia = partes_fecha[0] mes = partes_fecha[1].lower() # Convierte el mes a minúsculas año = partes_fecha[2] return f"{dia}-{mes}-{año}" else: # Esto se ejecutaría si el formato de la fecha extraída no es el esperado (ej. 2 partes) return fecha_encontrada return None # Si no se encontró el patrón de fecha #DOCUMENTO:DNI CAMPO:SEXO def obtener_genero(texto): # El patrón ahora busca "Sexo" O "Seno" (insensible a mayúsculas/minúsculas) # Seguido opcionalmente de un ":" # Seguido opcionalmente de espacios en blanco # Captura la siguiente letra patron = r"(Sexo|Seno):?\s*([A-Za-z])" # re.search busca la primera ocurrencia del patrón en el texto # re.IGNORECASE hace que la búsqueda sea insensible a mayúsculas/minúsculas para "Sexo" y "Seno" match = re.search(patron, texto, re.IGNORECASE) if match: # match.group(2) devuelve lo que se capturó en el SEGUNDO grupo de paréntesis, # que es la letra del sexo/seno. match.group(1) sería "Sexo" o "Seno". return match.group(2) else: return None