falta filtrar por fecha y ampliaciones

This commit is contained in:
binlaab
2025-11-25 13:07:14 +01:00
parent ead080b2e5
commit f3b588a3b9
5 changed files with 22 additions and 18 deletions

View File

@@ -3,9 +3,10 @@ from normalizacion import *
def filtrar_telefono(fichero, tel): def filtrar_telefono(fichero, tel):
f = open(fichero, "r", encoding="utf-8") f = open(fichero, "r", encoding="utf-8")
tel_n = normalizar_telefono(tel)
for i in f.readlines(): for i in f.readlines():
telefono = i.split(";")[0] telefono = normalizar_telefono(i.split(";")[0])
if telefono.strip() == tel: if telefono.strip() == tel_n:
print(i) print(i)
else: else:
continue continue

View File

@@ -46,23 +46,25 @@ def main():
normalizar(fichero, formato_fecha, formato_coordenadas) normalizar(fichero, formato_fecha, formato_coordenadas)
elif '-sphone' in argv: elif '-sphone' in argv:
telefono = int(argv[argv.index('-sphone') + 1]) telefono = argv[argv.index('-sphone') + 1]
fichero = argv[argv.index('-sphone') + 2] fichero = argv[argv.index('-sphone') + 2]
filtrar_telefono(telefono, fichero) filtrar_telefono(fichero, telefono)
elif '-snif' in argv: elif '-snif' in argv:
nif = argv[argv.index('-snif') + 1] nif = argv[argv.index('-snif') + 1]
fichero = argv[argv.index('-snif') + 2] fichero = argv[argv.index('-snif') + 2]
filtrar_nif(nif, fichero) filtrar_nif(fichero, nif)
elif '-stime' in argv: # convertir entre formatos elif '-stime' in argv: # convertir entre formatos
desde = argv[argv.index('-stime') + 1] desde = argv[argv.index('-stime') + 1]
hasta = argv[argv.index('-stime') + 2] hasta = argv[argv.index('-stime') + 2]
fichero = argv[argv.index('-stime') + 3] fichero = argv[argv.index('-stime') + 3]
print("stime") print("stime")
except FileNotFoundError as e:
print(e) else:
exit(1) exit(1)
except:
exit(2)

View File

@@ -29,7 +29,7 @@ def normalizar_instante(instante, formato):
if not d['segundo'].isdigit(): if not d['segundo'].isdigit():
d['segundo'] = '00' d['segundo'] = '00'
return f"{d['hora']}:{d['minuto']}:{d['segundo']} {d['dia']}/{d['mes']}/{d['año']}" return f"{d['hora']:0>2}:{d['minuto']}:{d['segundo']} {d['dia']:0>2}/{d['mes']:0>2}/{d['año']}"
def normalizar_telefono(telefono): def normalizar_telefono(telefono):
@@ -44,16 +44,17 @@ def normalizar_coordenada(coordenada, formato):
def normalizar(fichero, formato_fecha, formato_coordenadas): def normalizar(fichero, formato_fecha, formato_coordenadas):
try: try:
f = open(fichero, 'r') f = open(fichero, 'r', encoding='utf-8')
except: except:
exit(1) exit(1)
n = 0 n = 0
for i in f.readlines(): for i in f.readlines():
telefono, nif, instante, coordenada, producto, precio = i.split(";") telefono, nif, instante, coordenada, producto, precio = i.split(";")
instante = normalizar_instante(instante.strip(), 1) instante = normalizar_instante(instante.strip(), formato_fecha)
telefono = normalizar_telefono(telefono.strip()) telefono = normalizar_telefono(telefono.strip())
coordenada = normalizar_coordenada(coordenada.strip(), 3) n_coordenada = normalizar_coordenada(coordenada.strip(), formato_coordenadas)
print(instante, telefono, coordenada) if n_coordenada is None:
continue
n += 1 n += 1
print(n) print(n)

View File

@@ -91,8 +91,8 @@ def gradoDecimal(grados,minutos,segundos):
def validarCoordenada(cadena, form): def validarCoordenada(cadena, form):
if P.fullmatch(): if P.fullmatch(cadena):
M = P.fullmatch() M = P.fullmatch(cadena)
if M.group("Grados1"): if M.group("Grados1"):
grados1 = M.group("Grados1") grados1 = M.group("Grados1")
grados2 = M.group("Grados2") grados2 = M.group("Grados2")
@@ -153,7 +153,7 @@ def validarEntrada(entrada):
tel = validarTelefono(telefono.strip()) tel = validarTelefono(telefono.strip())
dni = validarDni(dni.strip()) dni = validarDni(dni.strip())
fecha = validarInstante(fecha.strip()) fecha = validarInstante(fecha.strip())
coordenadas = validarCoordenada(coordenadas.strip()) coordenadas = validarCoordenada(coordenadas.strip(), 1)
valores = { valores = {
'telefono': tel, 'telefono': tel,
@@ -166,4 +166,4 @@ def validarEntrada(entrada):
for k in valores.keys(): for k in valores.keys():
if valores[k] is None: if valores[k] is None:
return None return None
return valores return valores

View File

@@ -17,5 +17,5 @@ D = re.compile(d, flags=re.I|re.M)
i = r"((?P<anyo>0{3}[1-9]|\d{4})-(?P<mes>0\d|1[0-2])-(?P<dia>[0-2]\d|3[01])\s+(?P<hora>[0-1]\d|2[0-4]):(?P<minuto>[0-5]\d))|((?P<mes>january|february|march|april|may|june|july|august|september|october|november|december)\s+(?P<dia>\d|[12]\d|3[01]),\s+(?P<anyo>0{3}[1-9]|\d{4})\s+(?P<hora>[1-9]|1[0-2]):(?P<minuto>[0-5]\d)\s+(?P<segundo>[ap]m))|((?P<hora>[01]\d|2[0-3]):(?P<minuto>[0-5]\d):(?P<segundo>[0-5]\d)\s+(?P<dia>[0-2]\d|3[01])/(?P<mes>0\d|1[0-2])/(?P<anyo>0{3}[1-9]|\d{4}))" i = r"((?P<anyo>0{3}[1-9]|\d{4})-(?P<mes>0\d|1[0-2])-(?P<dia>[0-2]\d|3[01])\s+(?P<hora>[0-1]\d|2[0-4]):(?P<minuto>[0-5]\d))|((?P<mes>january|february|march|april|may|june|july|august|september|october|november|december)\s+(?P<dia>\d|[12]\d|3[01]),\s+(?P<anyo>0{3}[1-9]|\d{4})\s+(?P<hora>[1-9]|1[0-2]):(?P<minuto>[0-5]\d)\s+(?P<segundo>[ap]m))|((?P<hora>[01]\d|2[0-3]):(?P<minuto>[0-5]\d):(?P<segundo>[0-5]\d)\s+(?P<dia>[0-2]\d|3[01])/(?P<mes>0\d|1[0-2])/(?P<anyo>0{3}[1-9]|\d{4}))"
I = re.compile(i, flags=re.IGNORECASE) I = re.compile(i, flags=re.IGNORECASE)
R = r"( *(?P<Grados1>([0-2][0-9][0-9])|(3[0-5][0-9]))(?P<Minutos1>[0-6][0-9])(?P<Segundos1>[0-6][0-9]\.\d{4})(?P<Letra1>(N|S))(?P<Grados2>([0-2][0-9][0-9])|(3[0-5][0-9]))(?P<Minutos2>[0-6][0-9])(?P<Segundos2>[0-6][0-9]\.\d{4})(?P<Letra2>(W|E)) *)|( *(?P<Grados1>((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P<Minutos1>([0-5][0-9])|[0-9])' *(?P<Segundos1>(([0-5][0-9])|[0-9])\.\d{4})\" *(?P<Letra1>(N|S)) *, *(?P<Grados2>((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P<Minutos2>([0-5][0-9])|[0-9])' *(?P<Segundos2>(([0-5][0-9])|[0-9])\.\d{4})\" *(?P<Letra2>(W|E)) *)|( *((?P<Signo1>[+|\-| ])(?P<Coord1>(([1-8]?[0-9])\.\d+)|90)) *, *((?P<Signo2>[+|\-| ])(?P<Coord2>([1][1-7][1-9]\.\d+)|([1-8]?[0-9]\.\d+))|90) *)" R = r"( *(?P<Grados1>([0-2][0-9][0-9])|(3[0-5][0-9]))(?P<Minutos1>[0-6][0-9])(?P<Segundos1>[0-5][0-9]\.\d{4})(?P<Letra1>(N|S))(?P<Grados2>([0-2][0-9][0-9])|(3[0-5][0-9]))(?P<Minutos2>[0-5][0-9])(?P<Segundos2>[0-5][0-9]\.\d{4})(?P<Letra2>(W|E)) *)|( *(?P<Grados1>((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P<Minutos1>([0-5][0-9])|[0-9])' *(?P<Segundos1>(([0-5][0-9])|[0-9])\.\d{4})\" *(?P<Letra1>(N|S)) *, *(?P<Grados2>((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P<Minutos2>([0-5][0-9])|[0-9])' *(?P<Segundos2>(([0-5][0-9])|[0-9])\.\d{4})\" *(?P<Letra2>(W|E)) *)|( *((?P<Signo1>[+\- ]?)(?P<Coord1>(([1-8]?[0-9])\.\d+)|90)) *, *((?P<Signo2>[+\- ]?)(?P<Coord2>([1][0-7][0-9]\.\d+)|([1-9]?[0-9]\.\d+))|90) *)"
P = re.compile(R) P = re.compile(R)