6

変数が正規表現一致オブジェクトかどうかを確認する必要があります。

print(type(m))そのようなものを返します:<_sre.SRE_Match object at 0x000000000345BE68>

しかし、インポート_sreして実行しようとするtype(m) is SRE_Matchと例外NameError: name 'SRE_Match' is not definedが発生します。

4

5 に答える 5

7

できるよ

SRE_MATCH_TYPE = type(re.match("", ""))

プログラムの開始時、そしてその後

type(m) is SRE_MATCH_TYPE

比較したいときはいつでも。

于 2012-09-20T06:20:33.090 に答える
2

問題を解決する方法はたくさんあるので、積み重ねてください。

def is_match_obj(m):
    t = type(m)
    return (t.__module__, t.__name__) == ('_sre', 'SRE_Match')
于 2012-09-20T07:36:59.600 に答える
0

このようなことができます

isinstance(m, type(re.match("","")))

通常、一致オブジェクトのタイプをチェックする必要はないので、誰もそれを行うための良い方法をわざわざ作っていません。

于 2012-09-20T06:23:45.700 に答える
0

Astype(m)は、私が使用する印刷可能な表現を返します:

repr(type(m)) == "<type '_sre.SRE_Match'>"

したがって、モジュールをインポートする必要はなく、追加の呼び出し_sreを行う必要もありません。match

これは Python 2 の場合です。Python 3 よりも type(m) の結果が異なるよう<_sre.SRE_Match object at 0x000000000345BE68>です。もしそうなら、私はあなたが使用できると思います:

repr(type(m)).startswith("<_sre.SRE_Match")

または同様のもの (私は現在 Python 3 インタープリターを手元に持っていないため、回答のこの部分は不正確になる可能性があります)。

于 2012-09-20T07:30:35.663 に答える