我正在尝试将字符串拆分为子字符串,按“AND”术语拆分,然后从“垃圾”中清除每个子字符串。
以下代码得到错误:
AttributeError:“NoneType”对象没有属性“组”
import re
def fun(self, str):
for subStr in str.split('AND'):
p = re.compile('[^"()]+')
m = p.match(subStr)
print (m.group())
如果上面的代码是您真正想要做的,那么首先使用 string.translate 删除垃圾会不会更容易。就像是:
import string
def clean_and_split(x):
return string.translate(x, None, r'^"()').split("AND")
这意味着match
没有找到,它返回了None
。
请注意,您可能希望在re.search
此处使用而不是re.match
. re.match
仅匹配字符串的开头,而re.search
可以搜索字符串中的任何位置。
从文档:
Python 基于正则表达式提供了两种不同的原始操作:
re.match()
仅在字符串的开头检查匹配 ,而在re.search()
字符串中的任何位置检查匹配(这是 Perl 默认所做的)。
如果您已经知道,那么您可以None
使用以下方法处理:
if m:
print (m.group())
else:
#do something else