2017-02-18 4 views
-1

Я хочу, чтобы распечатать содержимое списка в определенном формате:Python: печать в python?

Вот что я хочу, чтобы это выглядело как:

 [ 
      "Zara", 
      3.2 
     ], 
     [ 
      "Maxwell", 
      3.3 
     ], 
     [ 
      "Norman", 
      3.1 
     ] 

Я запутался, как достичь этого результата. Прямо сейчас у меня есть отдельные элементы в списке как строки, которые имеют формат («\» «+ name +» «\» + », \ n» + grade). Однако я не знаю, как добиться правильного отступов и брекетинга для распечатки списка. Должен ли я просто вручную печатать [и] каждый раз или есть способ скомпилировать все элементы в один список, где вызов для печати списка приведет к выходу выше? Я мог вручную форматировать скобки, но после этого он оставил бы последнюю скобку с запятой, чего я не хочу. Любая помощь будет принята с благодарностью!

+1

Возможный дубликат [Python довольно печатающий словарь списков, сокращенные длинные списки] (http://stackoverflow.com/questions/38533282/python-pretty-print-dictionary-of-lists-abbreviate-long-lists) – krock

+0

'print ('[\ n" {} ", \ n {} \ n]'. format (name, grade))' –

+1

Если бы это был хороший вопрос, и на него ответили, он остался бы здесь для других, чтобы найти ответ. Если это был плохой вопрос, его следует удалить. Нет ситуации, когда изменение содержания вопроса до «ответа» приемлемо. – zvone

ответ

2

Вы можете использовать json.dumps(). Если предположить, что у вас есть список списков вроде этого:

>>> import json 
>>> grades = [['Zara', 3.2], ['Maxwell', 3.3], ['Norman', 3.1]] 
>>> print(json.dumps(grades, indent=4)) 
[ 
    [ 
     "Zara", 
     3.2 
    ], 
    [ 
     "Maxwell", 
     3.3 
    ], 
    [ 
     "Norman", 
     3.1 
    ] 
] 

Это довольно близко к тому, что вы после этого, без каких-либо усилий кодирования, и не спасся кавычки в самих строк. Если вам не нравится внешние скобки, то вы можете распечатать каждый список в отдельности:

>>> print(*(json.dumps(grade, indent=4) for grade in grades), sep=',\n') 
[ 
    "Zara", 
    3.2 
], 
[ 
    "Maxwell", 
    3.3 
], 
[ 
    "Norman", 
    3.1 
] 
+0

Спасибо за помощь! Первый вызов не регистрирует символы новой строки в моей строке. Список содержит строки, которые отформатированы следующим образом: ("\" "+ name +" "\" + ", \ n" + grade). Первый вызов, который вы рекомендовали, печатает строки типа «\» Zara \ », \ n3.2n« –

+0

@ReefRashid: если вы вставляете код, который я показываю в интерпретатор Python, вы увидите, что результат, который я показываю выше, соответствует ваш желаемый выход. Является ли вход тем же, т. Е. Вы используете список списков? – mhawke

0

Просто уточнить, у вас есть список с элементами списка? И внутренние элементы всегда являются строкой, которую вы хотите напечатать в кавычках, за которой следует число? Вы можете просто определить функцию суб

def print_list_item(item, last_item): 
     print "[" 
     print ' "' + item[0] + '",' 
     print ' ' + str(item[1]) + ',' 
     if last_item: 
      print "]" 
     else: 
      print "]," 

(Обратите внимание, что я использую одинарные кавычки, чтобы эффективно «побег» двойная кавычка) Вы можете распечатать список, как это:

for i, item in enumerate(my_list): 
     print_list_item(item, i == len(my_list)-1) 

Возможно, вы также можете очистить это с помощью printf.