변수 유형이 문자열인지 확인하는 방법은 무엇입니까?
파이썬의 변수 유형이 문자열인지 확인하는 방법이 있습니까? 처럼:
isinstance(x,int);
정수 값?
Python 2.x에서는 다음을 수행합니다.
isinstance(s, basestring)
basestring
및 의 추상 슈퍼 클래스 입니다 . 개체가 또는 의 인스턴스인지 여부를 테스트하는 데 사용할 수 있습니다 .str
unicode
str
unicode
Python 3.x에서 올바른 테스트는 다음과 같습니다.
isinstance(s, str)
bytes
클래스는 파이썬 3에서 문자열 유형으로 간주되지 않습니다.
나는 이것이 오래된 주제라는 것을 알고 있지만 Google에 처음으로 표시된 주제이며 만족스러운 답변을 찾을 수 없다는 점을 감안할 때 향후 참조를 위해 여기에 남겨 둘 것입니다.
six 는 이미이 문제를 다루고있는 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')
도움이 되었기를 바랍니다!
int와 문자열보다 더 많은 것을 검사하는 경우에도 type 모듈이 존재합니다. http://docs.python.org/library/types.html
아래 더 나은 답변을 기반으로 수정하십시오. 3 개 정도의 답변을 내려가 밑끈의 멋짐에 대해 알아보세요.
이전 답변 : Windows의 모든 COM 호출을 포함하여 여러 위치에서 얻을 수있는 유니 코드 문자열에주의하십시오.
if isinstance(target, str) or isinstance(target, unicode):
이후 basestring
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
여기에 다른 사람들이 제공하는 좋은 제안이 많이 있지만 좋은 크로스 플랫폼 요약을 보지 못했습니다. 다음은 모든 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)
In this function, we use isinstance(object, classinfo)
to see if our input is a str
in Python 3 or a basestring
in Python 2.
Also I want notice that if you want to check whether the type of a variable is a specific kind, you can compare the type of the variable to the type of a known object.
For string you can use this
type(s) == type('')
So,
You have plenty of options to check whether your variable is string or not:
a = "my string"
type(a) == str # first
a.__class__ == str # second
isinstance(a, str) # third
str(a) == a # forth
type(a) == type('') # fifth
This order is for purpose.
Alternative way for Python 2, without using basestring:
isinstance(s, (str, unicode))
But still won't work in Python 3 since unicode
isn't defined (in Python 3).
a = '1000' # also tested for 'abc100', 'a100bc', '100abc'
isinstance(a, str) or isinstance(a, unicode)
returns True
type(a) in [str, unicode]
returns True
Here is my answer to support both Python 2 and Python 3 along with these requirements:
- Written in Py3 code with minimal Py2 compat code.
- Remove Py2 compat code later without disruption. I.e. aim for deletion only, no modification to Py3 code.
- Avoid using
six
or similar compat module as they tend to hide away what is trying to be achieved. - Future-proof for a potential 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)
If you do not want to depend on external libs, this works both for Python 2.7+ and 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");
You can simply use the isinstance function to make sure that the input data is of format string or unicode. Below examples will help you to understand easily.
>>> isinstance('my string', str)
True
>>> isinstance(12, str)
False
>>> isinstance('my string', unicode)
False
>>> isinstance(u'my string', unicode)
True
s = '123'
issubclass(s.__class__, str)
This is how I do it:
if type(x) == type(str()):
I've seen:
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
'developer tip' 카테고리의 다른 글
강제로 "git push"로 원격 파일 덮어 쓰기 (0) | 2020.09.30 |
---|---|
jQuery로 이미지 미리로드 (0) | 2020.09.30 |
CSS 폭발 관리 (0) | 2020.09.30 |
HTML Canvas를 gif / jpg / png / pdf로 캡처 하시겠습니까? (0) | 2020.09.30 |
Python 애플리케이션에 가장 적합한 프로젝트 구조는 무엇입니까? (0) | 2020.09.30 |