Jaki jest odpowiednik print_r () php w Pythonie?

81

Czy jest lepszy sposób na szybkie wyprowadzenie zawartości tablicy (wielowymiarowej lub nie). Dzięki.

usidlić
źródło
4
Należy wyjaśnić w pytaniu, ale: php.net/print_r
AJ.
1
Znak: jest to funkcja PHP, która wyświetla na ekranie zawartość dowolnej zmiennej, w tym tablice lub obiekty.
Álvaro González
print_r to funkcja w PHP, która może wyświetlać dowolną tablicę wymiarów w formacie, który pokazuje klucze i wartości.
Waleed Amjad
zobacz najwyżej ocenioną odpowiedź (nie zaakceptowaną) na stackoverflow.com/questions/192109/…
cwd
3
nie, nie należy tego wyjaśniać. wymaga po prostu podstawowej znajomości języka PHP i Python. jeśli nie rozumiesz pytania - to nie jest dla ciebie pytanie.
tishma

Odpowiedzi:

52

Instrukcja print w języku Python dobrze sobie radzi z formatowaniem tablic wielowymiarowych bez wymagania print_r dostępnego w php.

Ponieważ definicja print mówi, że każdy obiekt jest konwertowany na łańcuch, a proste tablice wypisują „[”, po których następuje rozdzielona przecinkami lista wartości obiektu, po której następuje „]”, będzie to działać dla dowolnej głębokości i kształtu 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ż to, odpowiedź AJ sugerująca, że pprint jest prawdopodobnie najlepszym rozwiązaniem.

Robert Christie
źródło
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)
Mukesh Chapagain
źródło
7

oto jeden, którego możesz spróbować:

https://github.com/sha256/python-var-dump

możesz go zainstalować po prostu za pomocą pip

pip install var_dump

zastrzeżenie: napisałem to :)

sha256
źródło
5

printi pprintświetnie nadają się do wbudowanych typów danych lub klas, które definiują rozsądną reprezentację obiektu. Jeśli chcesz mieć pełny zrzut dowolnych obiektów, będziesz musiał rzucić własne. To nie jest takie trudne: po prostu utwórz funkcję rekurencyjną, w której przypadek bazowy będzie dowolnym wbudowanym typem danych niebędącym kontenerem, a przypadek rekurencyjny zastosuj funkcję do każdego elementu kontenera lub każdego atrybutu obiektu, który można uzyskać za pomocą dir()lub inspectmodułu.

Max Shawabkeh
źródło
1
my_list = list(enumerate([1,2,3,4,5,6,7,8,9],0))

print(my_list)

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

Stephan van der Hulst
źródło
0

jeśli chcesz sformatować variablejako ciąg, możesz zrobić:

s = repr(variable)

działa niezależnie od typu i nie wymaga importu.

Jeśli chcesz zawrzeć zawartość obiektu w jednym ciągu wraz z jego typem:

if hasattr(variable, "__dict__"):
    s = "{}: {}".format(variable, vars(variable))
else:
    s = repr(variable)
AlejandroVD
źródło
0

Do prostych widoków testowych używam HttpResponse. Testowanie żądania z formularza, zmiennej, ciągu znaków, identyfikatora, a nie obiektu

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

def add_comment(request, id):
return HttpResponse(id)
Ivan Pirus
źródło