1

重複の可能性:
変数が SRE_Match かどうかを確認する

関数に渡されたパラメーターが正規表現の一致タイプであるかどうかを判断する必要があります。現在私は持っています:

re_type = type(re.compile(''))

def func(result):
    if isinstance(result, re_type):
        print("re")

ただし、再印刷することはできません。結果を印刷すると、次のようになります。

<_sre.SRE_Match object at 0x7fed5330>

このオブジェクトを認識する簡単な方法はありますか?

4

1 に答える 1

2

最初の行を次のように変更します。

re_type = type(re.match('', ''))

現在、 re_type は、正規表現を入力に適用した結果の一致ではなく、正規表現のタイプに設定されています。

また、 re モジュールは一致がない場合は None を返すことに注意してください。そのため、関数が実際に一致タイプまたは None のみを期待している場合は、次のようにするだけです。

def func(result):
   if result:
      # do stuff...

最後に、Python のEAFP 原則に違反している可能性があります。この最後のバージョンは、何かが壊れない限り、結果が一致タイプであると想定しています...

def func(result):
    try:
        for group in result.groups():
            # handle match group
    except AttributeError:
       # Looks like this wasn't a real match object
于 2012-10-15T20:28:25.597 に答える