programing

변수 유형이 문자열인지 확인하는 방법

goodjava 2022. 12. 30. 17:12

변수 유형이 문자열인지 확인하는 방법

변수 이 python인지 수 있는 요?string를 들면 다음과 같습니다.

isinstance(x,int);

정수값의 경우?

3.에서는 Python 3.x 의 확인 방법.s는 문자열입니다.

isinstance(s, str)

bytes3. python 3 되지 않습니다.


Python 2.x에서 올바른 체크는

isinstance(s, basestring)

basestring추상적인 슈퍼클래스입니다str ★★★★★★★★★★★★★★★★★」unicode 하나의 할 때 할 수 .str ★★★★★★★★★★★★★★★★★」unicode.

오래된 토픽인 것은 알지만, 구글에 처음 소개된 토픽이며, 어떤 답변도 만족스럽지 못하기 때문에 나중에 참조할 수 있도록 여기에 남겨두겠습니다.

6은 이미 이 문제를 다루는 Python 2 및 3 호환성 라이브러리입니다.그런 다음 다음과 같은 작업을 수행할 수 있습니다.

import six

if isinstance(value, six.string_types):
    pass # It's a string !!

코드를 검사하면 다음과 같이 나타납니다.

import sys

PY3 = sys.version_info[0] == 3

if PY3:
    string_types = str,
else:
    string_types = basestring,

Python 3.x 또는 Python 2.7.6의 경우

if type(x) == str:

다음 작업을 수행할 수 있습니다.

var = 1
if type(var) == int:
   print('your variable is an integer')

또는 다음과 같이 입력합니다.

var2 = 'this is variable #2'
if type(var2) == str:
    print('your variable is a string')
else:
    print('your variable IS NOT a string')

이게 도움이 되길 바래!

type() ★★★★★★★★★★★★★★★★★」isinstance()

간단한 답이 type(my_variable) is str단, " " " 를 사용합니다.type()가장 논리적이고 단순해 보이는 것 같아요

(Python3에서 테스트 완료):

# Option 1: check to see if `my_variable` is of type `str`
type(my_variable) is str

# Option 2: check to see if `my_variable` is of type `str`, including
# being a subclass of type `str` (ie: also see if `my_variable` is any object 
# which inherits from `str` as a parent class)
isinstance(my_variable, str)

파 the type()내장 기능의 메뉴얼은, https://docs.python.org/3/library/functions.html#type 를 참조해 주세요.그것은 부분적으로 다음과 같은 내용을 담고 있다.에 대한 주의:isinstance():

class type(object)
class type(name, bases, dict, **kwds)

인수 하나를 사용하여 개체 유형을 반환합니다.으로 return이 .object.__class__.

isinstance()오브젝트 타입 테스트에는 서브클래스가 고려되기 때문에 삽입 함수를 권장합니다.

해야 할 에는 '클래스'를 합니다.isinstance()대신.https://docs.python.org/3/library/functions.html#isinstance 의 메뉴얼을 참조해 주세요.

코드 예:

my_str = "hello"
my_int = 7

print(type(my_str) is str)
print(type(my_int) is str)

print()
print(isinstance(my_str, str))
print(isinstance(my_int, str))

출력:

True
False

True
False

유형 모듈은 ints 및 string보다 많은 것을 체크하는 경우에도 존재합니다.http://docs.python.org/library/types.html

아래의 더 나은 답변을 바탕으로 편집하십시오.약 3개의 답을 내려가고 베이스스트링의 쿨함에 대해 알아보세요.

오래된 답변: Unicode 문자열에 주의하십시오.Unicode 문자열은 Windows의 모든 COM 호출을 포함한 여러 곳에서 얻을 수 있습니다.

if isinstance(target, str) or isinstance(target, unicode):

basestringPython3는 Python3를 사용합니다.이 작은 트릭은 코드 호환성에 도움이 될 수 있습니다.

try: # check whether python knows about 'basestring'
   basestring
except NameError: # no, it doesn't (it's Python3); use 'str' instead
   basestring=str

그 후 Python2와 Python3 모두에서 다음 테스트를 실행할 수 있습니다.

isinstance(myvar, basestring)

유니코드 포함 Python 2/3

from __future__ import unicode_literals
from builtins import str  #  pip install future
isinstance('asdf', str)   #  True
isinstance(u'asdf', str)  #  True

http://python-future.org/overview.html

그렇게,

변수가 문자열인지 여부를 확인할 수 있는 다양한 옵션이 있습니다.

a = "my string"
type(a) == str # first 
a.__class__ == str # second
isinstance(a, str) # third
str(a) == a # forth
type(a) == type('') # fifth

이 주문은 목적을 위한 것입니다.

여기에서는 다른 사람들이 제안하는 좋은 제안들이 많이 있지만, 크로스 플랫폼 요약은 잘 보이지 않습니다.다음은 모든 Python 프로그램에 적합합니다.

def isstring(s):
    # if we use Python 3
    if (sys.version_info[0] >= 3):
        return isinstance(s, str)
    # we use Python 2
    return isinstance(s, basestring)

이 기능에서는isinstance(object, classinfo)우리의 입력 내용이strPython 3 또는 a에서basestringPython 2에 있습니다.

또한 변수의 유형이 특정 종류인지 확인하고 싶다면 변수의 유형을 알려진 개체의 유형과 비교할 수 있습니다.

문자열의 경우 이 항목을 사용할 수 있습니다.

type(s) == type('')

베이스스트링을 사용하지 않고 Python 2를 위한 대체 방법:

isinstance(s, (str, unicode))

Python 3에서는 아직 동작하지 않습니다.unicode정의되어 있지 않습니다(Python 3 ) 。

다음은 Python 2와 Python 3을 모두 지원하기 위한 답변과 다음 요구 사항입니다.

  • 최소 Py2 호환 코드로 Py3 코드로 작성.
  • 나중에 중단 없이 Py2 호환 코드를 삭제합니다.즉, Py3 코드는 수정하지 않고 삭제만 목표로 합니다.
  • 사용을 피하다six또는 달성하려고 하는 것을 숨기려고 하기 때문에 유사한 호환 모듈을 사용합니다.
  • 잠재적인 Py4에 대한 미래 대비.

import sys
PY2 = sys.version_info.major == 2

# Check if string (lenient for byte-strings on Py2):
isinstance('abc', basestring if PY2 else str)

# Check if strictly a string (unicode-string):
isinstance('abc', unicode if PY2 else str)

# Check if either string (unicode-string) or byte-string:
isinstance('abc', basestring if PY2 else (str, bytes))

# Check for byte-string (Py3 and Py2.7):
isinstance('abc', bytes)
a = '1000' # also tested for 'abc100', 'a100bc', '100abc'

isinstance(a, str) or isinstance(a, unicode)

True를 반환한다.

type(a) in [str, unicode]

True를 반환한다.

외부 libs에 의존하지 않으려면 Python 2.7+와 Python 3(http://ideone.com/uB4Kdc):

# your code goes here
s = ["test"];
#s = "test";
isString = False;

if(isinstance(s, str)):
    isString = True;
try:
    if(isinstance(s, basestring)):
        isString = True;
except NameError:
    pass;

if(isString):
    print("String");
else:
    print("Not String");

isinstance 함수를 사용하면 입력 데이터가 형식 문자열 또는 Unicode인지 확인할 수 있습니다.아래 예시는 쉽게 이해할 수 있도록 도와드립니다.

>>> isinstance('my string', str)
True
>>> isinstance(12, str)
False
>>> isinstance('my string', unicode)
False
>>> isinstance(u'my string',  unicode)
True

개요:

Python2와 Python3를 모두 원하신다면 Unicode도 포함시키려면 휴대용 방법은 없는 것 같습니다.나는 결국 이 관용구를 쓰게 되었다.

# Near the top of my program
if sys.version_info[0] >= 3:
    basestring = str

오브젝트가 문자열인지 확인하기 위해 테스트하는 경우:

if isinstance(obj, basestring):
    ...

솔직히 Python3가 베이스링과 타입을 떨어뜨린 것에 조금 놀랐습니다.String Types.그것들을 떨어뜨릴 이유가 없다고 생각합니다.그리고 둘 중 하나를 유지한다면 이 문제를 해결할 수 있을 것입니다.

s = '123'
issubclass(s.__class__, str)

방법은 다음과 같습니다.

if type(x) == type(str()):

본 적이 있다:

hasattr(s, 'endswith') 
>>> thing = 'foo'
>>> type(thing).__name__ == 'str' or type(thing).__name__ == 'unicode'
True

언급URL : https://stackoverflow.com/questions/4843173/how-to-check-if-type-of-a-variable-is-string