পাইথনের কোনও উপায় রয়েছে কি পাইথনের মধ্যে ভেরিয়েবলের প্রকারটি একটি string
:
isinstance(x,int);
পূর্ণসংখ্যার মানগুলির জন্য?
isinstance(True, int) is True
।
isinstance(x,str)
পাইথন 3 এ সঠিক (স্ট্র্যান্ড একটি মৌলিক প্রকার)।
পাইথনের কোনও উপায় রয়েছে কি পাইথনের মধ্যে ভেরিয়েবলের প্রকারটি একটি string
:
isinstance(x,int);
পূর্ণসংখ্যার মানগুলির জন্য?
isinstance(True, int) is True
।
isinstance(x,str)
পাইথন 3 এ সঠিক (স্ট্র্যান্ড একটি মৌলিক প্রকার)।
উত্তর:
পাইথন ২.x এ, আপনি তা করবেন
isinstance(s, basestring)
basestring
হয় বিমূর্ত সুপারক্লাস এর str
এবং unicode
। এটি কোনও বস্তুর উদাহরণ str
বা এর উদাহরণ কিনা তা পরীক্ষা করতে ব্যবহার করা যেতে পারে unicode
।
পাইথন 3.x এ, সঠিক পরীক্ষাটি হয়
isinstance(s, str)
bytes
বর্গ পাইথন 3 একটি স্ট্রিং টাইপ বিবেচিত হবে না।
unicode
বস্তুগুলি মিস করবে , যা স্ট্রিং হিসাবে বিবেচনা করা উচিত। প্রকার str
এবং প্রকার উভয়েরই unicode
সাধারণ বেস শ্রেণি রয়েছে basestring
এবং এটিই আপনি যাচাই করতে চান।
basestring = str
।
unicode
পাইথন 2 এবং 3 এর মধ্যে সামঞ্জস্যের জন্য আমার সুপারিশটি হল "ছয়" লাইব্রেরিটি ব্যবহার করা। (বিশেষত isintance(s, six.string_types)
এই ক্ষেত্রে)
আমি জানি এটি একটি পুরানো বিষয়, তবে গুগলে প্রদর্শিত প্রথমটি এবং আমি কোনও উত্তর সন্তোষজনক না পেয়েছি বলে আমি ভবিষ্যতের রেফারেন্সের জন্য এখানে রেখে দেব:
ছয়টি পাইথন 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,
value_is_string = isinstance(value, str if sys.version_info[0] >= 3 else basestring)
যেখানে >=
ধরে নেওয়া হয় যে কোনও পরিণাম পাইথন 4+ str
স্ট্রিংয়ের জন্য মূল শ্রেণি রাখে keeps
পাইথন 3.x বা পাইথন 2.7.6 এ
if type(x) == str:
==
করা স্পষ্টতই পিইপি 8 দ্বারা নিরুৎসাহিত করা হয় এবং "ইউনিডিয়োম্যাটিক" হিসাবে বিবেচিত হওয়ার পাশাপাশি বেশ কয়েকটি ডাউনসাইড রয়েছে যেমন, এটি সাবক্লাসগুলির উদাহরণগুলি সনাক্ত করে না, এটি str
স্ট্রিংগুলিও বিবেচনা করা উচিত। আপনি যদি সত্যিই ধরণের ধরণের জন্য পরীক্ষা করতে চান str
এবং সাবক্লাসটি স্পষ্টভাবে বাদ দিতে চান তবে ব্যবহার করুন type(x) is str
।
আপনি কীট এবং স্ট্রিংয়ের চেয়ে বেশি পরীক্ষা করে দেখলে টাইপ মডিউলটিও বিদ্যমান। http://docs.python.org/library/types.html
types.StringTypes
,।
নীচে আরও ভাল উত্তরের ভিত্তিতে সম্পাদনা করুন। প্রায় 3 টি উত্তর নীচে যান এবং বেসস্ট্রিংয়ের শীতলতা সম্পর্কে সন্ধান করুন।
পুরানো উত্তর: ইউনিকোড স্ট্রিংগুলি সন্ধান করুন, যা আপনি উইন্ডোজের সমস্ত সিওএম কল সহ বেশ কয়েকটি জায়গা থেকে পেতে পারেন।
if isinstance(target, str) or isinstance(target, unicode):
isinstance()
দ্বিতীয় যুক্তি হিসাবে একটি tuple লাগে । সুতরাং basestring
উপস্থিত না থাকলেও আপনি কেবল ব্যবহার করতে পারেন isinstance(target, (str, unicode))
।
unicode
সংজ্ঞায়িত করা হয় না:NameError: name 'unicode' is not defined
যেহেতু basestring
Python3 সংজ্ঞায়িত করা হয় না, এই সামান্য কৌতুক কোড সামঞ্জস্যপূর্ণ করতে সহায়তা করে দিতে পারে:
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)
basestring = (str, bytes)
পাইথন 2/3 সহ ইউনিকোড
from __future__ import unicode_literals
from builtins import str # pip install future
isinstance('asdf', str) # True
isinstance(u'asdf', str) # True
type('foo')
হচ্ছে unicode
পাইথন 2 ডিফল্টরূপে, এবং দ্বিতীয় এক str
দৃষ্টান্ত হচ্ছে unicode
। মনে হয় কোডটি পাইথন 2 এবং 3 এ বৈধ করে তোলে আবার ধন্যবাদ!
এছাড়াও আমি নোটিশটি চাই যে আপনি যদি ভেরিয়েবলের ধরণটি একটি নির্দিষ্ট ধরণের কিনা তা পরীক্ষা করতে চান তবে আপনি ভেরিয়েবলের প্রকারকে কোনও পরিচিত বস্তুর প্রকারের সাথে তুলনা করতে পারেন।
স্ট্রিংয়ের জন্য আপনি এটি ব্যবহার করতে পারেন
type(s) == type('')
str
? ইউনিকোড স্ট্রিং সম্পর্কে কী বলা যায়, যা এমনকি str
2.x থেকে উত্তরাধিকার সূত্রেও আসে না? isinstance(s, basestring)
2.x, বা isinstance(s, str)
3.x এ ব্যবহার করুন
isinstance()
সাবক্লাসগুলির জন্য অনুমতি দেয় (যা কেবল স্ট্রিংগুলিও বিশেষায়িত), অতিরিক্ত type('')
কলটি অনর্থক হয় যখন আপনি কেবল ব্যবহার করতে পারেন str
এবং প্রকারগুলি সিঙ্গেলন, তাই type(s) is str
আরও কার্যকর পরীক্ষা হতে চলেছে।
অন্যরা এখানে সরবরাহ করেছেন প্রচুর ভাল পরামর্শ, তবে আমি একটি ভাল ক্রস প্ল্যাটফর্মের সারাংশ দেখতে পাই না। যে কোনও পাইথন প্রোগ্রামের জন্য নিম্নলিখিতগুলি ভাল ড্রপ হওয়া উচিত:
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)
আমাদের ইনপুটটি str
পাইথন 3 এ বা পাইথন 2 তে একটি কিনা তা দেখতে ব্যবহার করি basestring
।
>=
কমপক্ষে বিবেচনা করুন ।
a = '1000' # also tested for 'abc100', 'a100bc', '100abc'
isinstance(a, str) or isinstance(a, unicode)
সত্য ফিরে
type(a) in [str, unicode]
সত্য ফিরে
এই প্রয়োজনীয়তাগুলির সাথে পাইথন 2 এবং পাইথন 3 উভয়কে সমর্থন করার জন্য আমার উত্তর এখানে রয়েছে:
six
বা অনুরূপ কমপ্যাট মডিউলটি এড়িয়ে চলুন কারণ তারা কী অর্জন করার চেষ্টা করছে তা লুকাতে থাকে।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)
আপনি যদি বাহ্যিক 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");
ইনপুট ডেটা ফর্ম্যাট স্ট্রিং বা ইউনিকোডের তা নিশ্চিত করার জন্য আপনি কেবল আইসনস্ট্যান্স ফাংশনটি ব্যবহার করতে পারেন । নীচে উদাহরণগুলি আপনাকে সহজে বুঝতে সাহায্য করবে।
>>> 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)
আমি এটি এইভাবে করি:
if type(x) == type(str()):
type(str())
বলার খুব চক্রাকার উপায় str
। প্রকারগুলি সিঙ্গেলন, তাই type(x) is str
আরও কার্যকর। isinstance()
পরিবর্তে ব্যবহার করা উচিত, যদি না আপনার সাবক্লাস উপেক্ষা করার খুব ভাল কারণ থাকে str
।
আমি দেখা করেছি:
hasattr(s, 'endswith')
>>> thing = 'foo'
>>> type(thing).__name__ == 'str' or type(thing).__name__ == 'unicode'
True
type(thing).__name__ == 'str'
তার চেয়ে বেশি পছন্দ করবেন ? এছাড়াও পাইথন আধুনিক সংস্করণে অস্তিত্ব নেই। type(thing) == str
isinstance(thing, str)
unicode