Как отформатировать вывод в оболочке Python, чтобы он был многострочным?
И в Python Shell, и в BPython я стараюсь, чтобы мои выходные данные естественно разбивались на несколько строк, как это происходит, например, в интерпретаторе узлов.
Вот пример того, что я имею в виду:
# This is what is currently happening
# (I'm truncating output, but the response is actually a lot longer than this):
>>> response.dict
{'status': '200', 'accept-ranges': 'bytes', 'cache-control': 'max-age=604800'}
# Here's what I'd like to happen:
>>> response.dict
{'status': '200',
'accept-ranges': 'bytes',
'cache-control': 'max-age=604800'}
Это сделало бы чтение вещей намного проще. Кто-нибудь знает, возможно ли настроить это либо в BPython, либо просто в простой оболочке? (Или, честно говоря, любой переводчик - я бы переключился на то, что позволяет мне это делать.)
Большое спасибо!
РЕДАКТИРОВАТЬ: Спасибо за ответы всех! Я уже сталкивался с Pretty Print и подумывал об ее использовании. Я также подумал о том, чтобы просто использовать цикл for для печати всего на отдельной строке. Это не плохие идеи, но я надеялся, что смогу заставить переводчика сделать это автоматически.
2 ответа
Вы могли бы использовать pprint()
:
rd = {'status': '200', 'accept-ranges': 'bytes', 'cache-control': 'max-age=604800', 'another item': 'another value'}
from pprint import pprint
pprint(rd)
Результат:
{'accept-ranges': 'bytes',
'another item': 'another value',
'cache-control': 'max-age=604800',
'status': '200'}
Есть несколько способов сделать это. Вы можете использовать тройные кавычки ("""), как показано в ссылке, вместе с"\n". Другие методы также перечислены в ссылке как строковый Pythonic способ создания длинной многострочной строки. При работе с объектом Json Вы можете использовать следующий код, который должен помочь.
import json
with open('msgs.json', 'r') as json_file:
for row in json_file:
data = json.loads(row)
print json.dumps(data, sort_keys=True, indent=2, separators=(',', ': '))