2010-02-02 19 views
64

Czy istnieje lepszy sposób szybkiego wyprowadzania zawartości tablicy (wielowymiarowej lub jakiej nie). Dzięki.Co to jest odpowiednik php w print_r() w python?

+4

powinny być wyjaśnione w odpowiedzi na pytanie, ale: http://php.net/print_r –

+1

Znak: jest to funkcja PHP wyświetla na ekranie zawartość dowolnej zmiennej, w tym tablic lub obiektów. –

+0

print_r to funkcja w PHP, która może wyprowadzać tablicę wymiarów w formacie pokazującym klucze i wartości. –

Odpowiedz

40

Instrukcja Pythona print dobrze pasuje do formatowania macierzy wielodrożnościowych bez potrzeby korzystania z funkcji php w wersji print_r.

Jako definicję wydruku stwierdza się, że każdy obiekt jest konwertowany na ciąg znaków, a jako proste tablice wyświetlają '[', po których następuje rozdzielana przecinkami lista wartości obiektów, po której następuje znak ']', to zadziała na dowolną głębokość i kształt tablic.

Na przykład

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

Jeśli potrzebujesz bardziej zaawansowanego formatowania niż ten, AJ s odpowiedź sugeruje pprint jest chyba do zrobienia.

+0

@ cb160 fajna odpowiedź! –

4

print i pprint są świetne dla wbudowanych typów danych lub klas, które definiują reprezentację zdrowego obiektu. Jeśli chcesz pełny zrzut dowolnych obiektów, będziesz musiał rzucić własną. To nie jest takie trudne: wystarczy utworzyć funkcję rekursywną, w której podstawową jednostką jest dowolny wbudowany typ danych bez kontenera, oraz przypadek rekurencyjny stosujący funkcję do każdego elementu kontenera lub każdego atrybutu obiektu, który można uzyskać przy użyciu modułu dir() lub inspect.

3
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) 
0

jeśli chcesz sformatować variable jako ciąg można zrobić:

s = repr(variable) 

to działa bez względu na rodzaj, a nie requiere żadnych importu.

Jeśli chcesz dołączyć zawartość obiektu w jeden ciąg znaków wraz ze swoim rodzaju:

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

przypadku prostych widoków testowych używam HttpResponse.Testowanie żądania od formy, zmienna, sznurka, ID, nie Object

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

def add_comment(request, id): 
return HttpResponse(id)