File size: 3,043 Bytes
67b82ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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