2024-10-01 07:41:03 发布
网友
这是一个地址:
address = "35 rue de trucmuche, 75009 PARIS"
我想用正则表达式提取地址中的zipcode(75009)。在
75009
我试过了:
我得到一个:
AttributeError: 'NoneType' object has no attribute 'groupdict'
我想我的正则表达式是错的。我不明白为什么。在
你只是错过了?在命名的捕获组中:
^.*(?P<zipcode>\d{5}).*$
Python中的命名捕获组必须以?开头:
?
>>> import re >>> address = "35 rue de trucmuche, 75009 PARIS" >>> re.match('^.*(?P<zipcode>\d{5}).*$', address).groupdict()['zipcode'] '75009'
否则,您将尝试匹配文本P<zipcode>。在
P<zipcode>
另外,.groupdict()方法返回一个普通的Python字典:
.groupdict()
这意味着您将需要以dct['zipcode']的形式访问zipcode值,而不是dct.zipcode。在
dct['zipcode']
dct.zipcode
你的正则表达式是错误的。这就是它不匹配的原因,它返回None,并抱怨None没有groupdict()。在
None
groupdict()
事实上,据我所知,有两个错误。在
reg = re.compile('^.*(?P<zipcode>\d{5}).*$')
^- (需要一个“?”在“P”前面)
另一个错误是groupdict()需要像普通的dict一样被访问,也就是说
dict
你也应该检查一下是否匹配
if match: match.groupdict()['zipcode']
根据https://docs.python.org/2/library/re.html#match-objects,如果匹配对象存在,它将返回True。在
True
你只是错过了?在命名的捕获组中:
^{pr2}$
Python中的命名捕获组必须以
?
开头:否则,您将尝试匹配文本
P<zipcode>
。在另外,
^{pr2}$.groupdict()
方法返回一个普通的Python字典:这意味着您将需要以
dct['zipcode']
的形式访问zipcode值,而不是dct.zipcode
。在你的正则表达式是错误的。这就是它不匹配的原因,它返回
None
,并抱怨None
没有groupdict()
。在事实上,据我所知,有两个错误。在
^- (需要一个“?”在“P”前面)
另一个错误是
^{pr2}$groupdict()
需要像普通的dict
一样被访问,也就是说你也应该检查一下是否匹配
根据https://docs.python.org/2/library/re.html#match-objects,如果匹配对象存在,它将返回
True
。在相关问题 更多 >
编程相关推荐