Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式捕获&;属性错误:';非类型';对象没有属性';集团';_Python_Regex - Fatal编程技术网

Python正则表达式捕获&;属性错误:';非类型';对象没有属性';集团';

Python正则表达式捕获&;属性错误:';非类型';对象没有属性';集团';,python,regex,Python,Regex,我想捕捉“Bukit Batok Avenue 3”中的“Avenue”一词: 组(1)不工作,因为返回了以下内容: AttributeError:“非类型”对象没有属性“组” 或者,对正则表达式进行编码,以便捕获数字(3)之前的单词(Avenue)可能吗?您可以使用此正则表达式匹配最后一个单词: >>> import re >>> re.search(r'(\w+)\s*\d$', "Bukit Batok Avenue 3", re.I) <_sre

我想捕捉“Bukit Batok Avenue 3”中的“Avenue”一词:

组(1)不工作,因为返回了以下内容:

AttributeError:“非类型”对象没有属性“组”


或者,对正则表达式进行编码,以便捕获数字(3)之前的单词(Avenue)可能吗?

您可以使用此正则表达式匹配最后一个单词:

>>> import re
>>> re.search(r'(\w+)\s*\d$', "Bukit Batok Avenue 3", re.I)
<_sre.SRE_Match object; span=(12, 20), match='Avenue 3'>
>>> re.search(r'(\w+)\s*\d$', "Bukit Batok Avenue 3", re.I).group(1)
'Avenue'

移动行“street_name=…”,然后在其上生成正则表达式。“no attribute'group'”可能意味着正则表达式不匹配。非常感谢您的及时回答,我意识到.group(1)不能使用,因为它会认为该分组不可用:if re.search(r'\d+$,street\u name):m=re.search(r'(\w+)\s*\d$,street\u name,re.I)。group(1)else:m=re.compile(r'\b\s+\?$,re.IGNORECASE).search(street\u name)(如果m:street\u type=m)。group()如果street\u type不在预期范围内:street\u types[street\u type]。添加(street\u name)--->10 street\u type=m。group()11如果街道类型不在预期范围内:AttributeError:'str'对象没有属性'group',很抱歉上面的代码不漂亮。我似乎无法回答自己的问题,所以不得不发表评论。我想知道是否有一个正则表达式可以在一个数字(本例中为“3”)之前选择单词('Avenue'),而不必使用.group()。@jmulan,在分配
m
或查询
m
时,在一个位置或另一个位置使用
.group()
,但不能同时使用这两个位置。如果是前者,则需要有一个异常处理程序来处理没有匹配项的情况。@ritesht93再次感谢您的及时回答,非常感谢。遗憾的是,它必须重新编译,因为输出必须是以下格式:,一个字符串或列表认为它不可用于以后在street_type=m.group()中的分组
>>> import re
>>> re.search(r'(\w+)\s*\d$', "Bukit Batok Avenue 3", re.I)
<_sre.SRE_Match object; span=(12, 20), match='Avenue 3'>
>>> re.search(r'(\w+)\s*\d$', "Bukit Batok Avenue 3", re.I).group(1)
'Avenue'
>>> import re
>>> re.findall(r'(\w+)\s*\d$', "Bukit Batok Avenue 3", re.I)
['Avenue']
>>> re.findall(r'(\w+)\s*\d$', "Bukit Batok Avenue 3", re.I)[0]
'Avenue'