1

我正在尝试将字符串拆分为子字符串,按“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())
4

2 回答 2

1

如果上面的代码是您真正想要做的,那么首先使用 string.translate 删除垃圾会不会更容易。就像是:

import string

def clean_and_split(x):
   return string.translate(x, None, r'^"()').split("AND")
于 2013-07-09T20:24:54.323 回答
1

这意味着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
于 2013-07-09T19:57:07.543 回答