1

文字列をサブ文字列に分割し、「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())
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.matchre.matchは文字列の先頭のみに一致しますre.searchが、文字列内の任意の場所を検索できます。

ドキュメントから:

Python は、正規表現に基づいた 2 つの異なるプリミティブ操作を提供します: 文字列の先頭でre.match()のみ一致をチェックし、文字列内の任意の場所で一致をチェックします (これは Perl がデフォルトで行うことです)。re.search()

すでにわかっている場合は、次をNone使用して処理できます。

if m:
   print (m.group())
else:
   #do something else
于 2013-07-09T19:57:07.543 に答える