Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 객체가 문자열인지 확인하는 방법 (Python 2.x vs 3.x)

Python 2.x에서 문자열 타입 확인하기

Python 2.x에는 str(바이트 문자열)과 unicode(유니코드 문자열)라는 두 가지 문자열 타입이 존재하며, 이 둘은 공통 부모 클래스인 basestring을 상속받습니다.

1. 문자열 계열 전체 확인하기

객체 obj가 문자열 타입이거나 문자열 타입의 하위 클래스인지 확인하려면 basestring을 사용합니다. strunicode가 모두 basestring의 하위 클래스이기 때문에 한 번의 검사로 두 타입을 모두 커버할 수 있습니다.

isinstance(obj, basestring)

2. str 타입만 확인하기

objstr 또는 그 하위 클래스의 인스턴스인지 확인하려면 다음과 같이 작성합니다.

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()는 하위 클래스까지 포함하여 더 유연하고 안전한 검사를 제공하기 때문입니다.