Wie kann ich überprüfen, ob ein Python-Objekt eine Zeichenkette ist (entweder regulär oder Unicode)?
Antworten
Zu viele Anzeigen?Python 3
In Python 3.x basestring
ist nicht mehr verfügbar, da str
ist der einzige String-Typ (mit der Semantik von Python 2.x's unicode
).
Die Prüfung in Python 3.x ist also einfach:
isinstance(obj_to_test, str)
Daraus folgt Die Lösung der offiziellen 2to3
Konvertierungswerkzeug: Konvertierung basestring
a str
.
Python 2
Um zu prüfen, ob ein Objekt o
ist ein Stringtyp einer Unterklasse eines Stringtyps:
isinstance(o, basestring)
weil beide str
y unicode
sind Unterklassen von basestring
.
Um zu prüfen, ob der Typ der o
ist genau str
:
type(o) is str
Um zu prüfen, ob o
ist eine Instanz von str
oder einer Unterklasse von str
:
isinstance(o, str)
Die obigen Schritte funktionieren auch für Unicode-Zeichenfolgen, wenn Sie die str
con unicode
.
Es kann jedoch sein, dass Sie gar keine explizite Typüberprüfung durchführen müssen. "Duck Typing" kann Ihren Bedürfnissen entsprechen. Siehe http://docs.python.org/glossary.html#term-duck-typing .
Siehe auch Was ist der kanonische Weg, um für Typ in Python zu überprüfen?
Python 2 und 3
(kreuzkompatibel)
Wenn Sie ohne Rücksicht auf die Python-Version (2.x vs. 3.x) prüfen wollen, verwenden Sie six
( PyPI ) und seine string_types
Attribut:
import six
if isinstance(obj, six.string_types):
print('obj is a string!')
Unter six
(ein sehr leichtgewichtiges Einzeldateimodul), macht es einfach este :
import sys
PY3 = sys.version_info[0] == 3
if PY3:
string_types = str
else:
string_types = basestring
- See previous answers
- Weitere Antworten anzeigen