Was ist das Äquivalent von PHPs print_r () in Python?


81

Oder gibt es eine bessere Möglichkeit, den Inhalt eines Arrays schnell auszugeben (mehrdimensional oder was nicht). Vielen Dank.


4
Sollte in der Frage erklärt werden, aber: php.net/print_r
AJ.

1
Mark: Dies ist eine PHP-Funktion, die den Inhalt aller Variablen, einschließlich Arrays oder Objekte, auf dem Bildschirm anzeigt.
Álvaro González

print_r ist eine Funktion in PHP, die ein beliebiges Dimensionsarray in einem Format ausgeben kann, das die Schlüssel und Werte anzeigt.
Waleed Amjad

Sehen Sie die am höchsten bewertete Antwort (nicht die akzeptierte Antwort) auf stackoverflow.com/questions/192109/…
cwd

3
Nein, es sollte nicht in Frage gestellt werden. Es erfordert lediglich Grundkenntnisse in PHP und Python. Wenn Sie die Frage nicht verstehen, ist sie keine Frage für Sie.
Tishma

Antworten:


52

Die Python- Print- Anweisung kann Multidimesion-Arrays gut formatieren, ohne dass print_r in PHP verfügbar sein muss.

Da die Definition für print besagt, dass jedes Objekt in eine Zeichenfolge konvertiert wird und einfache Arrays ein '[' gefolgt von einer durch Kommas getrennten Liste von Objektwerten gefolgt von einem ']' drucken, funktioniert dies für jede Tiefe und Form von Arrays .

Zum Beispiel

>>> x = [[1,2,3],[4,5,6]]
>>> print x
[[1, 2, 3], [4, 5, 6]]

Wenn Sie eine erweiterte Formatierung benötigen, ist die Antwort von AJ , die pprint vorschlägt, wahrscheinlich der richtige Weg.



9
from pprint import pprint

student = {'Student1': { 'Age':10, 'Roll':1 }, 
           'Student2': { 'Age':12, 'Roll':2 }, 
           'Student3': { 'Age':11, 'Roll':3 }, 
           'Student4': { 'Age':13, 'Roll':4 }, 
           'Student5': { 'Age':10, 'Roll':5 }
           }

pprint(student)


5

printund pprinteignen sich hervorragend für integrierte Datentypen oder Klassen, die eine gesunde Objektdarstellung definieren. Wenn Sie einen vollständigen Speicherauszug beliebiger Objekte wünschen, müssen Sie Ihre eigenen rollen. Das ist nicht so schwer: Erstellen Sie einfach eine rekursive Funktion, wobei der Basisfall ein beliebiger nicht in den Container integrierter Datentyp ist und der rekursive Fall die Funktion auf jedes Element eines Containers oder jedes Attribut des Objekts anwendet, das abgerufen werden kann mit dir()oder das inspectModul.



1
my_list = list(enumerate([1,2,3,4,5,6,7,8,9],0))

print(my_list)

Druckt [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8) , (8, 9)]


0

Wenn Sie variableals Zeichenfolge formatieren möchten, haben Sie folgende Möglichkeiten:

s = repr(variable)

Es funktioniert unabhängig vom Typ und erfordert keine Importe.

Wenn Sie den Inhalt eines Objekts zusammen mit seinem Typ in eine einzelne Zeichenfolge aufnehmen möchten:

if hasattr(variable, "__dict__"):
    s = "{}: {}".format(variable, vars(variable))
else:
    s = repr(variable)

0

Für einfache Testansichten verwende ich HttpResponse. Testanforderung von Formular, Variable, Zeichenfolge, ID, nicht Objekt

from django.http.response import HttpResponse
HttpResponse(variable)

def add_comment(request, id):
return HttpResponse(id)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.