Python + Regex:AttributeError:'NoneType'对象没有属性'groups'

时间:2013-03-05 19:51:34

标签: python regex

我有一个字符串,我想提取一个子集。这是更大的Python脚本的一部分。

这是字符串:

import re

htmlString = '</dd><dt> Fine, thank you.&#160;</dt><dd> Molt bé, gràcies. (<i>mohl behh, GRAH-syuhs</i>)'

我要拉出“Moltbé,gràcies.mohlbehh,GRAH-syuhs ”。为此,我使用re.search

使用正则表达式
SearchStr = '(\<\/dd\>\<dt\>)+ ([\w+\,\.\s]+)([\&\#\d\;]+)(\<\/dt\>\<dd\>)+ ([\w\,\s\w\s\w\?\!\.]+) (\(\<i\>)([\w\s\,\-]+)(\<\/i\>\))'

Result = re.search(SearchStr, htmlString)

print Result.groups()
AttributeError: 'NoneType' object has no attribute 'groups'

由于Result.groups()不起作用,我想做的提取也不起作用(即Result.group(5)Result.group(7))。 但我不明白为什么我会收到这个错误?正则表达式在TextWrangler中有效,为什么不在Python中呢?我是Python的初学者。

3 个答案:

答案 0 :(得分:40)

您收到AttributeError,因为您在groups上呼叫None,但没有任何方法。

regex.search返回None表示正则表达式找不到与提供的字符串模式匹配的任何内容。

使用正则表达式时,最好检查是否匹配:

Result = re.search(SearchStr, htmlString)

if Result:
    print Result.groups()

答案 1 :(得分:9)

import re

htmlString = '</dd><dt> Fine, thank you.&#160;</dt><dd> Molt bé, gràcies. (<i>mohl behh, GRAH-syuhs</i>)'

SearchStr = '(\<\/dd\>\<dt\>)+ ([\w+\,\.\s]+)([\&\#\d\;]+)(\<\/dt\>\<dd\>)+ ([\w\,\s\w\s\w\?\!\.]+) (\(\<i\>)([\w\s\,\-]+)(\<\/i\>\))'

Result = re.search(SearchStr.decode('utf-8'), htmlString.decode('utf-8'), re.I | re.U)

print Result.groups()

以这种方式工作。表达式包含非拉丁字符,因此通常会失败。您必须解码为Unicode并使用re.U(Unicode)标志。

我也是初学者,我自己也曾多次面对这个问题。

答案 2 :(得分:-2)

import re 
your_multicastip = "239.255.666.275"
if([224<=int(x)<240 for x in re.split('\.',re.match(r"^2(?:2[4-9]|3\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?|0)){3}$",your_multicastip).groups())].count(True)==1):
    print("%s is a valid multicast ip address",your_multicastip)    
else:
    print("%s is not a valid multicast ip address",your_multicastip)

Stacktrace:

Traceback (most recent call last):
  File "source_file.py", line 3, in <module>
    if([224<=int(x)<240 for x in re.split('\.',re.match(r"^2(?:2[4-9]|3\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?|0)){3}$",your_multicastip).groups())].count(True)==1):
AttributeError: 'NoneType' object has no attribute 'groups'

我是python初学者,我遇到了“其他”情况的问题。