현과 목록을 구별하는 버마교적 방법은 무엇인가요?
프로그램의 경우 오브젝트가 문자열 또는 문자열 및 기타 유사한 목록을 포함하는 목록일 수 있는 장소가 많이 있습니다.이것들은 보통 JSON 파일에서 읽습니다.둘 다 다르게 대우받을 필요가 있다.지금 저는 아이인스턴스를 사용하고 있습니다만, 가장 버마적인 방법이라고는 생각하지 않습니다만, 더 좋은 방법이 있을까요?
모듈을 Import할 필요가 없습니다.isinstance()
,str
그리고.unicode
(3시 이전은 없습니다)unicode
3분 안에!)가 작업을 대신합니다.
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
'programing' 카테고리의 다른 글
JSON.stringify는 도망가지 않나요? (0) | 2023.03.05 |
---|---|
asp.net MVC 상단에 angular js를 사용하는 이점 (0) | 2023.03.05 |
Map 내의 null 값과 bean 내의 null 필드가 Jackson을 통해 직렬화되지 않도록 하는 방법 (0) | 2023.03.05 |
클라이언트 측 Javascript 클럭을 서버 날짜와 동기화하는 가장 좋은 방법 (0) | 2023.03.05 |
스프링 부트에서 여러 디스패처 서블릿/웹 컨텍스트 사용 (0) | 2023.03.05 |