如何从以下字符串中提取美国的邮政编码(zip code)?
import re
address = "Moab, UT 84532"
postal_code = re.match('^\d{5}(-\d{4})?$', address)
print postal_code
>>> postal_code = re.search(r'.*(\d{5}(\-\d{4})?)$', address)
>>> postal_code.groups()
('84532', None)
re.match('\d{5}$', address)
re.search('\d{5}(-\d{4})?$', address)
您可以使用:
postal_code = re.match('^.*?(\d+)$', address)
if postal_code is not None:
print postal_code.group(1)
这个方法适用于以下所有格式:
99999-9999
99999 9999
99999
address = '123 Main St, 12345-5678 USA'
re.search('(\d{5})([- ])?(\d{4})?', address).groups()
re.search('(\d{5})([- ])?(\d{4})?', address).group(0)
而group(1)和group(3)包含邮编的两个部分。由于我只适用于包含邮编的字段,因此使用match。我还在开头和结尾分别添加了^ $以符合这种情况。
zip_code = '12345-6655'
re.match('^(\d{5})([- ])?(\d{4})?$', zip_code).group(0)