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