import regex as re letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'] reemplazo_nie = { 'X': 0, 'Y': 1, 'Z': 2, None: '', } meses = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'] t = r"(?P\+[0-9]+)? *(?P\d{3})-(?P\d{3})-(?P\d{3})" T = re.compile(t) d = r"(((?P[X-Z])*(?P\d{7}))|(?P\d{8}))-(?P[A-HJ-NP-TV-Z])" # cambiar, el nie son 7 D = re.compile(d, flags=re.I|re.M) i = r"((?P0{3}[1-9]|\d{4})-(?P0\d|1[0-2])-(?P[0-2]\d|3[01])\s+(?P[0-1]\d|2[0-4]):(?P[0-5]\d))|((?Pjanuary|february|march|april|may|june|july|august|september|october|november|december)\s+(?P\d|[12]\d|3[01]),\s+(?P0{3}[1-9]|\d{4})\s+(?P[1-9]|1[0-2]):(?P[0-5]\d)\s+(?P[ap]m))|((?P[01]\d|2[0-3]):(?P[0-5]\d):(?P[0-5]\d)\s+(?P[0-2]\d|3[01])/(?P0\d|1[0-2])/(?P0{3}[1-9]|\d{4}))" I = re.compile(i, flags=re.IGNORECASE) R = r"( *(?P([0-2][0-9][0-9])|(3[0-5][0-9]))(?P[0-6][0-9])(?P[0-5][0-9]\.\d{4})(?P(N|S))(?P([0-2][0-9][0-9])|(3[0-5][0-9]))(?P[0-5][0-9])(?P[0-5][0-9]\.\d{4})(?P(W|E)) *)|( *(?P((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P([0-5][0-9])|[0-9])' *(?P(([0-5][0-9])|[0-9])\.\d{4})\" *(?P(N|S)) *, *(?P((1[0-9][0-9])|(2[0-9][0-9])|(3[0-5][0-9])|\d{2}|\d{1}))° *(?P([0-5][0-9])|[0-9])' *(?P(([0-5][0-9])|[0-9])\.\d{4})\" *(?P(W|E)) *)|( *((?P[+\- ]?)(?P(([1-8]?[0-9])\.\d+)|90)) *, *((?P[+\- ]?)(?P([1][0-7][0-9]\.\d+)|([1-9]?[0-9]\.\d+))|90) *)" P = re.compile(R)