Python 2.x에서 문자열 타입 확인하기
Python 2.x에는 str(바이트 문자열)과 unicode(유니코드 문자열)라는 두 가지 문자열 타입이 존재하며, 이 둘은 공통 부모 클래스인 basestring을 상속받습니다.
1. 문자열 계열 전체 확인하기
객체 obj가 문자열 타입이거나 문자열 타입의 하위 클래스인지 확인하려면 basestring을 사용합니다. str과 unicode가 모두 basestring의 하위 클래스이기 때문에 한 번의 검사로 두 타입을 모두 커버할 수 있습니다.
isinstance(obj, basestring)
2. str 타입만 확인하기
obj가 str 또는 그 하위 클래스의 인스턴스인지 확인하려면 다음과 같이 작성합니다.
isinstance(obj, str)
3. unicode 타입만 확인하기
obj가 유니코드 문자열(unicode)의 인스턴스인지 확인하려면 다음을 사용합니다.
isinstance(obj, unicode)
Python 3.x에서 문자열 타입 확인하기
Python 3.x에서는 모든 문자열이 str로 통합되었고, 별도의 unicode 타입과 basestring 클래스는 제거되었습니다. 따라서 아래 코드 하나만으로 일반 문자열과 유니코드 문자열을 모두 처리할 수 있습니다.
isinstance(obj, str)
실전 예제
타입 검사는 보통 조건문 안에서 다음과 같이 활용됩니다.
if isinstance(obj, str):
print("문자열입니다.")
else:
print("문자열이 아닙니다.")
주의 사항
basestring은 Python 3에서 존재하지 않으므로, Python 3 환경에서 사용하면NameError가 발생합니다.- 타입 검사 시
type(obj) == str보다isinstance()를 사용하는 것이 좋습니다.isinstance()는 하위 클래스까지 포함하여 더 유연하고 안전한 검사를 제공하기 때문입니다.