Búsqueda de código postal de Python, expresión regular
regex postal-code (3)
Tratar
import re
re.findall("[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}", x)
No necesitas el / b.
Intento usar expresiones regulares para encontrar un código postal del Reino Unido dentro de una cadena.
Tengo la expresión regular trabajando dentro de RegexBuddy, ver abajo:
/b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}/b
Tengo un montón de direcciones y quiero tomar el código postal de ellas, ejemplo a continuación:
123 Algunos nombres de carreteras
Ciudad, Ciudad
Condado
PA23 6NH
¿Cómo voy a hacer esto en Python? Conozco el módulo de re
para Python, pero estoy luchando para que funcione.
Aclamaciones
Eef
repitiendo su dirección 3 veces con el código postal PA23 6NH, PA2 6NH y PA2Q 6NH como prueba para su patrón y usando la expresión regular de wikipedia contra la suya, el código es ...
import re
s="123 Some Road Name/nTown, City/nCounty/nPA23 6NH/n123 Some Road Name/nTown, City"/
"County/nPA2 6NH/n123 Some Road Name/nTown, City/nCounty/nPA2Q 6NH"
#custom
print re.findall(r''/b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}/b'', s)
#regex from #http://en.wikipedia.orgwikiUK_postcodes#Validation
print re.findall(r''[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}'', s)
el resultado es
[''PA23 6NH'', ''PA2 6NH'', ''PA2Q 6NH'']
[''PA23 6NH'', ''PA2 6NH'', ''PA2Q 6NH'']
tanto las expresiones regulares dan el mismo resultado.
#!/usr/bin/env python
import re
ADDRESS="""123 Some Road Name
Town, City
County
PA23 6NH"""
reobj = re.compile(r''(/b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}/b)'')
matchobj = reobj.search(ADDRESS)
if matchobj:
print matchobj.group(1)
Ejemplo de salida:
[user@host]$ python uk_postcode.py
PA23 6NH