변수가 정규식 일치 개체인지 확인해야합니다.변수가 SRE_Match인지 확인하십시오.
print(type(m))
반환 그런 일 : <_sre.SRE_Match object at 0x000000000345BE68>
하지만 _sre
를 가져오고 예외 NameError: name 'SRE_Match' is not defined
가 발생 type(m) is SRE_Match
을 실행하려고 할 때.
변수가 정규식 일치 개체인지 확인해야합니다.변수가 SRE_Match인지 확인하십시오.
print(type(m))
반환 그런 일 : <_sre.SRE_Match object at 0x000000000345BE68>
하지만 _sre
를 가져오고 예외 NameError: name 'SRE_Match' is not defined
가 발생 type(m) is SRE_Match
을 실행하려고 할 때.
당신은 프로그램 시작시
SRE_MATCH_TYPE = type(re.match("", ""))
을 할 수있는 다음
type(m) is SRE_MATCH_TYPE
때마다 당신은 비교를 만들고 싶어.
예,이 접근법을 시도하고 작동합니다 그러나 그것은 더러워 보입니다)) –
그것입니까? 반드시 한 번만 실행해야하는 라인을 제외하고,'type (m) is SRE_Match' 해결책보다 더 이상 특성이 없습니다. 그리고 다른 무언가를하려고 할 때 (다른 많은 유형의 값을 가진 사전에서 정규 표현식 결과를 섞어서) 코드를 다루는 코드는 때로는 좀 특이해야합니다. –
"더티 (dirty)"는 "더 많은 코드 줄"또는 "비정상적인"을 의미하지는 않습니다.) –
당신이
isinstance(m, type(re.match("","")))
처럼 뭔가를 할 수는 보통 일치하는 개체의 유형을 확인 할 필요가 없기 때문에 아무도 그것을
그게 * 모든'isinstance' 쿼리에 일치 할 것입니다 ... – nneonneo
@nneonneo, 자주 변수를 사용하면 변수에 할당하기가 어렵지 않습니다. –
으로 type(m)
리턴을 할 수있는 좋은 방법을 귀찮게했다 프린트 가능 표현은 내가 사용합니다 :
repr(type(m)) == "<type '_sre.SRE_Match'>"
그래서 당신이 _sre
모듈을 가져올 필요가 없으며 추가 할 필요가 없습니다 match
전화.
파이썬 2 용입니다. 파이썬 3보다 유형 (m)의 결과가 다르다 (<_sre.SRE_Match object at 0x000000000345BE68>
과 같은 것).
repr(type(m)).startswith("<_sre.SRE_Match")
또는 유사한 무언가가 (내가 지금 손에 파이썬 3 통역을 가지고 있지 않기 때문에 답이 부분은 정확하지 않을 수 있습니다.) : 그렇다면 당신이 사용할 수있는 가정합니다. 문제를 해결하는 방법의 전체 무리가 이후
말뚝에, : 일반적으로
def is_match_obj(m):
t = type(m)
return (t.__module__, t.__name__) == ('_sre', 'SRE_Match')
는 당신은 단지 하나 반환'None' 또는 일치하는 개체는 ... 그래서 무슨 함수에서 일치하는 개체의 얻을 'None'을 테스트하는 데 문제가 있습니까? – nneonneo
다른 유형의 값을 가진 사전이 있으며 값 유형에 따라 다른 작업을 수행해야합니다. –
추악한 코드와 함께 추악한 데이터 구조가 생깁니다 –