rad / herramientas_campos.py
Moibe's picture
Reestructura general de acceso a campos y tools
7bdefa8
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