506 Stimmen

Wie findet man heraus, ob ein Python-Objekt eine Zeichenkette ist?

Wie kann ich überprüfen, ob ein Python-Objekt eine Zeichenkette ist (entweder regulär oder Unicode)?

329voto

John Fouhy Punkte 39035

Python 2

Verwenden Sie isinstance(obj, basestring) für ein zu prüfendes Objekt obj .

Dokumente .

295voto

sevenforce Punkte 7616

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 .

199voto

Matt S. Punkte 7271

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?

99voto

Nick T Punkte 23882

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

23voto

Zhou Jingyuan Punkte 355

Ich fand dies und mehr pythonic :

if type(aObject) is str:
    #do your stuff here
    pass

da Typobjekte Singleton sind, est kann verwendet werden, um das Objekt mit dem Typ str zu vergleichen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X