регулярное выражение для государственных сокращений (python) - PullRequest
4 голосов
/ 22 февраля 2010

Я пытаюсь создать регулярное выражение, соответствующее аббревиатурам штатов США в строке, используя python.

Аббревиатура может быть в формате:

CA
Ca

Строка может быть:

Boulder, CO 80303
Boulder, Co
Boulder CO
...

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

pat = re.compile("[A-Za-z]{2}")
st = pat.search(str)
stateAbb = st.group(0)

Ответы [ 2 ]

9 голосов
/ 22 февраля 2010

Простой и надежный способ - перечислить все состояния:

states = ['IA', 'KS', 'UT', 'VA', 'NC', 'NE', 'SD', 'AL', 'ID', 'FM', 'DE', 'AK', 'CT', 'PR', 'NM', 'MS', 'PW', 'CO', 'NJ', 'FL', 'MN', 'VI', 'NV', 'AZ', 'WI', 'ND', 'PA', 'OK', 'KY', 'RI', 'NH', 'MO', 'ME', 'VT', 'GA', 'GU', 'AS', 'NY', 'CA', 'HI', 'IL', 'TN', 'MA', 'OH', 'MD', 'MI', 'WY', 'WA', 'OR', 'MH', 'SC', 'IN', 'LA', 'MP', 'DC', 'MT', 'AR', 'WV', 'TX']
regex = re.compile(r'\b(' + '|'.join(states) + r')\b', re.IGNORECASE)

Используйте другой список штатов, если вы хотите штаты за пределами США.

1 голос
/ 22 февраля 2010
re.search(r'\b[a-z]{2}\b', subject, re.I)

он найдет двухбуквенные названия городов, хотя

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