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 | |
#DOCUMENTO:INE CAMPO:VIGENCIA | |
def obtener_vigencia(texto): | |
# La expresión regular busca: | |
# (\d{4}) -> Un grupo que captura 4 dígitos (el número de la izquierda) | |
# vigencia -> La palabra literal "vigencia" | |
# (\d{4}) -> Otro grupo que captura 4 dígitos (el número de la DERECHA) | |
# El 're.search' devuelve un objeto 'match' si encuentra el patrón | |
match = re.search(r'\d+vigencia(\d+)', texto) | |
if match: | |
# Si se encuentra una coincidencia, match.group(1) contiene el primer grupo capturado. | |
# En este caso, el número a la derecha. | |
numero_derecha = match.group(1) | |
print(f"El número a la derecha es: {numero_derecha}") | |
return numero_derecha | |
else: | |
print("No se encontró el patrón en el texto.") | |
return None |