string = '1f23wsedrfth 567tgyh112'
expectedChecksum = re.search( "[0-9a-f]{5}",string ).group(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
为什么会导致错误?我认为expectChecksum应该是'1f23w'
我使用{4}
尝试了以下代码,然后就可以了。
expectedChecksum = re.search( "[0-9a-f]{4}",string ).group(0)
expectedChecksum
'1f23'
答案 0 :(得分:0)
在你的正则表达式中,你检查从a到f的字符,但在你的字符串中有一个w在第5位。这可能会导致错误。 当你尝试使用{4}时,你没有为w做错,所以它不会抛出错误。
答案 1 :(得分:0)
数字0-9
和字母a-f
的字符串是唯一与您指定的正则表达式[0-9a-f]
匹配的字符串。因此,search function
在评估与您的正则表达式不匹配的字符串时会返回NoneType object
,因为group
没有属性Nonetype object
,因此会引发错误
我猜你想要的正则表达式是[0-9a-z]
,除非会有更复杂的组合和排序。
您可以使用pythex进一步测试正则表达式,以查看与正则表达式匹配的字符串。