2024-05-23 16:50:39 发布
网友
如何从以下字符串中“提取”邮政编码(US)?
import re address = "Moab, UT 84532" postal_code = re.match('^\d{5}(-\d{4})?$', address) print postal_code
首先,您使用的是match,它只从字符串的开头开始匹配:请参见http://docs.python.org/library/re.html#matching-vs-searching
另外,即使你使用的是搜索,你也不会抓取包含5位数字的组。
最后,即使您使用的是搜索,用一个克拉^开始您的正则表达式将迫使它从头开始搜索,这显然在您的情况下是行不通的。
>>> postal_code = re.search(r'.*(\d{5}(\-\d{4})?)$', address) >>> postal_code.groups() ('84532', None)
假设邮政编码总是5位(在美国不是这样吗?)
re.match('\d{5}$', address)
会的。
关于match vs search的注释是正确的,如果我想包括额外的4个字符:
re.search('\d{5}(-\d{4})?$', address)
应该这么做。
您可以使用:
postal_code = re.match('^.*?(\d+)$', address) if postal_code is not None: print postal_code.group(1)
首先,您使用的是match,它只从字符串的开头开始匹配:请参见http://docs.python.org/library/re.html#matching-vs-searching
另外,即使你使用的是搜索,你也不会抓取包含5位数字的组。
最后,即使您使用的是搜索,用一个克拉^开始您的正则表达式将迫使它从头开始搜索,这显然在您的情况下是行不通的。
假设邮政编码总是5位(在美国不是这样吗?)
会的。
关于match vs search的注释是正确的,如果我想包括额外的4个字符:
应该这么做。
您可以使用:
相关问题 更多 >
编程相关推荐