programing

현과 목록을 구별하는 버마교적 방법은 무엇인가요?

oldcodes 2023. 3. 5. 10:25
반응형

현과 목록을 구별하는 버마교적 방법은 무엇인가요?

프로그램의 경우 오브젝트가 문자열 또는 문자열 및 기타 유사한 목록을 포함하는 목록일 수 있는 장소가 많이 있습니다.이것들은 보통 JSON 파일에서 읽습니다.둘 다 다르게 대우받을 필요가 있다.지금 저는 아이인스턴스를 사용하고 있습니다만, 가장 버마적인 방법이라고는 생각하지 않습니다만, 더 좋은 방법이 있을까요?

모듈을 Import할 필요가 없습니다.isinstance(),str그리고.unicode(3시 이전은 없습니다)unicode3분 안에!)가 작업을 대신합니다.

Python 2.x:

Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> isinstance(u'', (str, unicode))
True
>>> isinstance('', (str, unicode))
True
>>> isinstance([], (str, unicode))
False

>>> for value in ('snowman', u'☃ ', ['snowman', u'☃ ']):
...     print type(value)
... 
<type 'str'>
<type 'unicode'>
<type 'list'>

Python 3.x:

Python 3.2 (r32:88445, May 29 2011, 08:00:24) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> isinstance('☃ ', str)
True
>>> isinstance([], str)
False

>>> for value in ('snowman', '☃ ', ['snowman', '☃ ']):
...     print(type(value))
... 
<class 'str'>
<class 'str'>
<class 'list'>

PEP008부터:

개체 유형 비교는 항상 다음을 사용해야 합니다.isinstance()유형을 직접 비교하는 대신.

Python3는 더 이상 이 기능을 가지고 있지 않기 때문에unicode또는basestring이 경우(목록 또는 문자열 중 하나를 예상하는 경우)에 대해 테스트하는 것이 좋습니다.list

if isinstance(thing, list):
    # treat as list
else:
    # treat as str/unicode

Python2와 Python3에 대응하고 있기 때문에

또 다른 방법으로는 "허락보다 용서를 구하는 것이 낫다"는 관행을 사용하여 일반적으로 Python에서 선호되는 duck-type을 먼저 사용할 수 있습니다. 예를 들어 다음과 같습니다.

try:
    value = v.split(',')[0]
except AttributeError:  # 'list' objects have no split() method
    value = v[0]

사용.isinstance:

Python>=2.3에서는 문자열은str또는unicode입력. 두 가지 경우를 모두 확인하려면

if isinstance(a,basestring): # same as isinstance(obj, (str, unicode))
   print "Object is a string"

Python 3에서는 하나의 문자열 유형만 존재하므로 대신basestring를 사용해야 합니다.str:

if isinstance(a,str):
   print "Object is a string"

단순하게 하는 것을 좋아하기 때문에 2.x와 3.x 모두에 대응하는 가장 짧은 형식을 다음에 나타냅니다.

# trick for py2/3 compatibility
if 'basestring' not in globals():
   basestring = str

v = "xx"

if isinstance(v, basestring):
   print("is string")

유형 모듈을 사용할 수 있습니다.

import types
if type(ls) == types.ListType:
    #your code for list objects here

언급URL : https://stackoverflow.com/questions/3227552/what-is-the-pythonic-way-of-differentiating-between-a-string-and-a-list

반응형