変数が正規表現一致オブジェクトかどうかを確認する必要があります。
print(type(m))
そのようなものを返します:<_sre.SRE_Match object at 0x000000000345BE68>
しかし、インポート_sre
して実行しようとするtype(m) is SRE_Match
と例外NameError: name 'SRE_Match' is not defined
が発生します。
できるよ
SRE_MATCH_TYPE = type(re.match("", ""))
プログラムの開始時、そしてその後
type(m) is SRE_MATCH_TYPE
比較したいときはいつでも。
問題を解決する方法はたくさんあるので、積み重ねてください。
def is_match_obj(m):
t = type(m)
return (t.__module__, t.__name__) == ('_sre', 'SRE_Match')
このようなことができます
isinstance(m, type(re.match("","")))
通常、一致オブジェクトのタイプをチェックする必要はないので、誰もそれを行うための良い方法をわざわざ作っていません。
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 インタープリターを手元に持っていないため、回答のこの部分は不正確になる可能性があります)。