Що є еквівалентом php print_r () у python?


81

Або є кращий спосіб швидко вивести вміст масиву (багатовимірний чи що ні). Дякую.


4
Потрібно пояснити у питанні, але: php.net/print_r
AJ.

1
Позначити: це функція PHP, яка відображає на екрані вміст будь-якої змінної, включаючи масиви або об'єкти.
Альваро Гонсалес

print_r - це функція в PHP, яка може виводити будь-який розмірний масив у форматі, що відображає ключі та значення.
Waleed Amjad 02

побачити самий високий номінальний відповідь ( а не загальноприйнята відповідь) на stackoverflow.com/questions/192109 / ...
ВУХО

3
ні, це не повинно пояснюватися. це просто вимагає базових знань як php, так і python. якщо ви не розумієте питання - це не питання для вас.
тишма

Відповіді:


52

Заява python print добре виконує форматування багатовимірних масивів, не вимагаючи print_r, доступного у php.

Оскільки у визначенні для друку зазначено, що кожен об’єкт перетворюється на рядок, а оскільки прості масиви друкують символ [[', за яким слідує розділений комами список значень об’єктів, після якого йде знак]], це буде працювати для будь-якої глибини та форми масивів. .

Наприклад

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

Якщо вам потрібно більш досконале форматування, ніж це, відповідь AJ, в якій випливає, що pprint - це, мабуть, шлях.



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

printі pprintчудово підходять для вбудованих типів даних або класів, які визначають розумне представлення об’єкта. Якщо вам потрібен повний дамп довільних об’єктів, вам доведеться скотити власні. Це не так складно: просто створіть рекурсивну функцію, при цьому базовий випадок - це будь-який неконтейнерний вбудований тип даних, а рекурсивний випадок застосовує функцію до кожного елемента контейнера або кожного атрибута об’єкта, який можна отримати за dir()допомогою inspectмодуля.




0

якщо ви хочете відформатувати variableяк рядок, ви можете зробити:

s = repr(variable)

він працює незалежно від типу та не вимагає імпорту.

Якщо ви хочете включити вміст об’єкта в один рядок разом із його типом:

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

0

Для простих тестових подань я використовую HttpResponse. Запит на тестування із форми, змінної, рядка, ідентифікатора, а не об’єкта

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

def add_comment(request, id):
return HttpResponse(id)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.