Gibt es eine Möglichkeit zu überprüfen, ob der Typ einer Variablen in Python string ist
isinstance(x,int);
für ganzzahlige Werte?
In Python 2.x würden Sie das tun
isinstance(s, basestring)
basestring
ist die abstrakte Oberklasse von str
und unicode
. Damit kann geprüft werden, ob ein Objekt eine Instanz von str
oder unicode
ist.
In Python 3.x ist der korrekte Test
isinstance(s, str)
Die bytes
-Klasse wird in Python 3 nicht als String-Typ betrachtet.
Ich weiß, dass dies ein altes Thema ist, aber da es das erste ist, das bei Google gezeigt wird, und da ich keine der Antworten als zufriedenstellend empfinde, lasse ich dies hier zum Nachschlagen:
six ist eine Python 2- und 3-Kompatibilitätsbibliothek, die dieses Problem bereits behandelt. Sie können dann so etwas tun:
import six
if isinstance(value, six.string_types):
pass # It's a string !!
Beim Überprüfen des Codes finden Sie Folgendes:
import sys
PY3 = sys.version_info[0] == 3
if PY3:
string_types = str,
else:
string_types = basestring,
In Python 3.x oder Python 2.7.6
if type(x) == str:
Das Typmodul ist auch vorhanden, wenn Sie mehr als Ints und Strings prüfen. http://docs.python.org/library/types.html
du kannst tun:
var = 1
if type(var) == int:
print('your variable is an integer')
oder:
var2 = 'this is variable #2'
if type(var2) == str:
print('your variable is a string')
else:
print('your variable IS NOT a string')
hoffe das hilft!
Bearbeiten Sie basierend auf einer besseren Antwort unten. Gehen Sie etwa 3 Antworten nach unten und informieren Sie sich über die Coolness des Basisstreifens.
Alte Antwort: Achten Sie auf Unicode-Zeichenfolgen, die Sie an verschiedenen Stellen erhalten können, einschließlich aller COM-Aufrufe in Windows.
if isinstance(target, str) or isinstance(target, unicode):
Python 2/3 einschließlich Unicode
from __future__ import unicode_literals
from builtins import str # pip install future
isinstance('asdf', str) # True
isinstance(u'asdf', str) # True
da basestring
nicht in Python3 definiert ist, kann dieser kleine Trick helfen, den Code kompatibel zu machen:
try: # check whether python knows about 'basestring'
basestring
except NameError: # no, it doesn't (it's Python3); use 'str' instead
basestring=str
danach können Sie den folgenden Test auf Python2 und Python3 ausführen
isinstance(myvar, basestring)
Viele gute Vorschläge von anderen hier, aber ich sehe keine gute plattformübergreifende Zusammenfassung. Folgendes sollte für jedes Python-Programm eine gute Wahl sein:
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 dieser Funktion verwenden wir isinstance(object, classinfo)
, um festzustellen, ob unsere Eingabe eine str
in Python 3 oder eine basestring
in Python 2 ist.
Ich möchte auch beachten, dass Sie den Typ der Variablen mit dem Typ eines bekannten Objekts vergleichen können, wenn Sie prüfen möchten, ob der Typ einer Variablen eine bestimmte Art ist.
Für String können Sie dies verwenden
type(s) == type('')
So,
Sie haben viele Möglichkeiten zu prüfen, ob Ihre Variable eine Zeichenfolge ist oder nicht:
a = "my string"
type(a) == str # first
a.__class__ == str # second
isinstance(a, str) # third
str(a) == a # forth
type(a) == type('') # fifth
Diese Reihenfolge ist zweckgebunden.
a = '1000' # also tested for 'abc100', 'a100bc', '100abc'
isinstance(a, str) or isinstance(a, unicode)
gibt True zurück
type(a) in [str, unicode]
gibt True zurück
Alternative für Python 2, ohne Basisring zu verwenden:
isinstance(s, (str, unicode))
Funktioniert jedoch in Python 3 noch nicht, da unicode
nicht definiert ist (in Python 3).
Hier ist meine Antwort, um sowohl Python 2 als auch Python 3 zusammen mit diesen Anforderungen zu unterstützen:
six
oder eines ähnlichen kompatiblen Moduls, da diese dazu neigen, das zu verdecken, was versucht wird.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)
Um zu testen, ob myvar eine Zeichenfolge ist, können Sie auch Folgendes verwenden:
if type(myvar) == str
Wenn Sie sich nicht auf externe Bibliotheken verlassen wollen, funktioniert dies sowohl für Python 2.7+ als auch für 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");
Um den Typ einer Variablen in Python zu überprüfen, können Sie den Typ function ..__ verwenden, z. type('hello')
, die Ausgabe str
gibt
Sie können einfach die Funktion isinstance verwenden, um sicherzustellen, dass die Eingabedaten das Format string oder unicode haben. Die folgenden Beispiele helfen Ihnen, sich leicht zu verstehen.
>>> isinstance('my string', str)
True
>>> isinstance(12, str)
False
>>> isinstance('my string', unicode)
False
>>> isinstance(u'my string', unicode)
True