在分割字符串上使用REGEX

时间:2013-07-09 19:54:29

标签: python regex for-loop split

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

2 个答案:

答案 0 :(得分:1)

这意味着找不到match,并返回None

请注意,您可能希望在此使用re.search而不是re.matchre.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")