4 Stimmen

Drucken einer Liste mit Python

Ich habe eine Liste aus Excel-Zellen zusammengestellt, mit Python - sagen wir listlist . Jedes Element in der Zelle/Liste ist in Unicode. Wenn ich die Liste ausdrucke als

print listlist

Ich sehe, dass jedem Mitglied der Liste ein 'u' vorangestellt ist. Aber wenn ich die Liste wie folgt ausdrucke

for member in listlist:
  print member

Ich sehe nicht, dass dem Mitglied ein 'u' vorangestellt ist.

Kann mir bitte jemand erklären, warum es diesen Unterschied gibt? Ist er im xlrd-Modul definiert?

4voto

Ioan Alexandru Cucu Punkte 11629

Beim Drucken der Liste wird jedes Objekt innerhalb der Liste unter Verwendung des Objekts __repr__

Wenn das Objekt allein gedruckt wird, verwendet es die __str__

3voto

Andrew Wilkinson Punkte 10354

Es gibt zwei Möglichkeiten, einen Python-Wert in eine Zeichenkette zu verwandeln str y repr (und ihre entsprechenden Klassenmethoden __str__ y __repr__ ). Der Unterschied ergibt sich aus diesen beiden Funktionen. Von der Python-Tutorial :

Die Funktion str() soll Darstellungen von Werten zurückgeben, die für den Menschen einigermaßen lesbar sind, während repr() Darstellungen erzeugen soll, die vom Interpreter gelesen werden können (oder einen SyntaxError erzwingen, wenn es keine gleichwertige Syntax gibt).

El print Anweisungsaufrufe str auf das übergebene Objekt, aber die Liste der __str__ Methodenaufrufe repr auf ihre Werte. Die Werte Ihrer Liste sind Unicode-Zeichenfolgen. In menschenlesbarer Form ist die Tatsache, dass es sich um Unicode handelt, irrelevant, daher erhalten Sie keine u oder sogar Anführungszeichen. In computerlesbarer Form ist es wichtig, also die u ist enthalten.

1voto

Adrien Plisson Punkte 20874

Wenn Sie eine Liste drucken, druckt Python eine Darstellung der Liste.

die Standarddarstellung einer Liste ist die Ausgabe einer öffnenden eckigen Klammer ( [ ), dann die Darstellung der einzelnen Elemente, getrennt durch ein Komma ( , ), die schließende eckige Klammer ( ] ). (Um genau zu sein, ist die Repräsentation eines Objekts das, was zurückgegeben wird, wenn man sein __repr__() Mitglied). Beachten Sie, dass die Standarddarstellung einer Unicode-Zeichenkette u'...' .

Wenn Sie jetzt eine Zeichenkette drucken, drucken Sie nicht die Vertretung der Zeichenkette, drucken Sie die Zeichenkette (den Wert, der durch den Aufruf der Funktion __str__() Mitglied). und die Zeichenfolge enthält keine Formatierungszeichen wie Unicode-Flags, Anführungszeichen usw..

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