python - कैसे जांचें कि चर का प्रकार स्ट्रिंग है या नहीं?
string variables (16)
इन आवश्यकताओं के साथ पाइथन 2 और पायथन 3 दोनों का समर्थन करने का मेरा जवाब यहां दिया गया है:
- न्यूनतम पी 2 2 कोड कोड के साथ पीई 3 कोड में लिखा गया।
- बाद में व्यवधान के बिना पीई 2 compat कोड निकालें। मैं केवल हटाने के लिए लक्ष्य है, पीई 3 कोड में कोई संशोधन नहीं।
-
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)
क्या जांचने का कोई तरीका है कि पाइथन में एक चर का प्रकार स्ट्रिंग है .. जैसे
isinstance(x,int);
पूर्णांक मूल्यों के लिए?
इसके अलावा मुझे नोटिस चाहिए कि यदि आप यह जांचना चाहते हैं कि एक चर का प्रकार एक विशिष्ट प्रकार है, तो आप चर के प्रकार को किसी ज्ञात ऑब्जेक्ट के प्रकार से तुलना कर सकते हैं।
स्ट्रिंग के लिए आप इसका उपयोग कर सकते हैं
type(s) == type('')
चूंकि basestring
को basestring
में परिभाषित नहीं किया गया है, इसलिए यह छोटी सी चाल कोड संगत बनाने में मदद कर सकती है:
try: # check whether python knows about 'basestring'
basestring
except NameError: # no, it doesn't (it's Python3); use 'str' instead
basestring=str
इसके बाद आप पाइथन 2 और पायथन 3 दोनों पर निम्न परीक्षण चला सकते हैं
isinstance(myvar, basestring)
टाइप मॉड्यूल भी मौजूद है यदि आप इनट्स और तारों से अधिक की जांच कर रहे हैं। http://docs.python.org/library/types.html
नीचे बेहतर उत्तर के आधार पर संपादित करें। लगभग 3 उत्तरों नीचे जाएं और बेसस्ट्रिंग की ठंडाता के बारे में जानें।
पुराना उत्तर: यूनिकोड तारों के लिए देखें, जिन्हें आप कई स्थानों से प्राप्त कर सकते हैं, जिनमें विंडोज़ में सभी COM कॉल शामिल हैं।
if isinstance(target, str) or isinstance(target, unicode):
पायथन 2.x में, आप करेंगे
isinstance(s, basestring)
basestring
str
और unicode
का अमूर्त basestring
है। इसका परीक्षण यह जांचने के लिए किया जा सकता है कि कोई ऑब्जेक्ट str
या unicode
का उदाहरण है या नहीं।
पायथन 3.x में, सही परीक्षण है
isinstance(s, str)
bytes
वर्ग को पायथन 3 में एक स्ट्रिंग प्रकार नहीं माना जाता है।
बेसस्टरिंग के बिना पाइथन 2 के लिए वैकल्पिक तरीका:
isinstance(s, (str, unicode))
लेकिन अभी भी पायथन 3 में काम नहीं करेगा क्योंकि unicode
परिभाषित नहीं किया गया है (पायथन 3 में)।
मुझे पता है कि यह एक पुराना विषय है, लेकिन Google पर दिखाया गया पहला व्यक्ति है और यह देखते हुए कि मुझे कोई भी जवाब संतोषजनक नहीं मिला है, मैं इसे भविष्य के संदर्भ के लिए यहां छोड़ दूंगा:
six एक पायथन 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,
यदि आप बाहरी libs पर निर्भर नहीं होना चाहते हैं, तो यह दोनों पायथन 2.7+ और पायथन 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");
यह जांचने के लिए कि क्या माईवर एक स्ट्रिंग है, इसका उपयोग करें:
if type(myvar) == type('abc')
यह मेरा इसे करने का तरीका है:
if type(x) == type(str()):
यह सुनिश्चित करने के लिए कि इनपुट डेटा प्रारूप स्ट्रिंग या यूनिकोड का है, आप बस इंस्टेंसेंस फ़ंक्शन का उपयोग कर सकते हैं । उदाहरणों के नीचे आपको आसानी से समझने में मदद मिलेगी।
>>> isinstance('my string', str)
True
>>> isinstance(12, str)
False
>>> isinstance('my string', unicode)
False
>>> isinstance(u'my string', unicode)
True
यूनिकोड सहित पायथन 2/3
from __future__ import unicode_literals
from builtins import str # pip install future
isinstance('asdf', str) # True
isinstance(u'asdf', str) # True
>>> thing = 'foo'
>>> type(thing).__name__ == 'str' or type(thing).__name__ == 'unicode'
True
s = '123'
issubclass(s.__class__, str)
varA = "hey"
if type(varA) == str:
print "it is a string"