Как отформатировать вывод в оболочке 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=(',', ': '))
Другие вопросы по тегам