Domanda

Sto cercando di utilizzare le espressioni regolari per trovare un codice postale del Regno Unito all'interno di una stringa.

Ho avuto l'espressione regolare che lavora all'interno RegexBuddy, vedi sotto:

\b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b

Ho un sacco di indirizzi e voglio afferrare il codice postale da loro, esempio qui sotto:

  

123 Alcuni Nome Strada
Città, Città
County
PA23 6NH

Come potrei andare su questo in Python? Sono consapevole del modulo re per Python, ma sto lottando per farlo funzionare.

Saluti

Eef

È stato utile?

Soluzione

ripetere il tuo indirizzo 3 volte con codice postale PA23 6NH, PA2 6NH e PA2Q 6NH come prova per voi modello e utilizzando l'espressione regolare da wikipedia contro il vostro, il codice è ..

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)

il risultato è

['PA23 6NH', 'PA2 6NH', 'PA2Q 6NH']
['PA23 6NH', 'PA2 6NH', 'PA2Q 6NH']

sia la regex di danno lo stesso risultato.

Altri suggerimenti

Prova

import re
re.findall("[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}", x)

Non è necessario il \ B.

#!/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)

uscita Esempio:

[user@host]$ python uk_postcode.py 
PA23 6NH
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top