Python, поиск по почтовому индексу регулярного выражения - PullRequest
3 голосов
/ 18 декабря 2008

Я пытаюсь использовать регулярные выражения, чтобы найти почтовый индекс Великобритании в строке.

У меня есть регулярное выражение, работающее внутри RegexBuddy, см. Ниже:

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

У меня есть несколько адресов, и я хочу получить с них почтовый индекс, например ниже:

123 Некоторые названия дорог
Город, город
Графство
PA23 6NH

Как бы я поступил по этому поводу в Python? Мне известен модуль re для Python, но я изо всех сил пытаюсь заставить его работать.

Приветствия

Eef

Ответы [ 3 ]

6 голосов
/ 18 декабря 2008

повторение вашего адреса 3 раза с почтовым индексом PA23 6NH, PA2 6NH и PA2Q 6NH в качестве теста для вашего шаблона и с использованием регулярного выражения из википедии против вашего, код:

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)

результат

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

оба регулярных выражения дают одинаковый результат.

0 голосов
/ 18 декабря 2008
#!/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)

Пример вывода:

[user@host]$ python uk_postcode.py 
PA23 6NH
0 голосов
/ 18 декабря 2008

Попробуйте

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

Тебе не нужен \ b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...