Python에서 목록을 "멋지게" 인쇄하는 방법
PHP에서 저는 다음을 수행할 수 있습니다.
echo '<pre>'
print_r($array);
echo '</pre>'
Python에서는 현재 다음과 같은 작업을 수행하고 있습니다.
print the_list
그러나 이로 인해 데이터가 크게 점보됩니다.그것을 읽을 수 있는 나무로 멋지게 인쇄할 수 있는 방법이 있습니까?(인텐트 포함)?
from pprint import pprint
pprint(the_list)
인쇄 함수 인수의 목록을 "포장 해제"하고 구분 기호로 새 줄(\n)을 사용하면 됩니다.
print(*lst, sep='\n')
lst = ['foo', 'bar', 'spam', 'egg']
print(*lst, sep='\n')
foo
bar
spam
egg
디버깅 중 빠른 해킹으로 가져올 필요 없이 작동합니다.pprint
리스트에 참여할 것입니다.'\n'
.
>>> lst = ['foo', 'bar', 'spam', 'egg']
>>> print '\n'.join(lst)
foo
bar
spam
egg
그 말은 다음과 같은 것을 의미합니다.
>>> print L
['this', 'is', 'a', ['and', 'a', 'sublist', 'too'], 'list', 'including', 'many', 'words', 'in', 'it']
>>> import pprint
>>> pprint.pprint(L)
['this',
'is',
'a',
['and', 'a', 'sublist', 'too'],
'list',
'including',
'many',
'words',
'in',
'it']
>>>
당신의 간결한 설명에서, 표준 라이브러리 모듈 pprint가 가장 먼저 떠오르지만, 만약 당신이 입력과 출력의 예를 설명할 수 있다면, 우리가 더 구체적인 도움을 제공할 수 있을지도 모릅니다!
import json
some_list = ['one', 'two', 'three', 'four']
print(json.dumps(some_list, indent=4))
출력:
[
"one",
"two",
"three",
"four"
]
https://docs.python.org/3/library/pprint.html
텍스트가 필요한 경우(예: 저주와 함께 사용):
import pprint
myObject = []
myText = pprint.pformat(myObject)
그리고나서myText
변수는 비슷한 것일 것입니다 php.var_dump
또는print_r
자세한 옵션 및 인수는 설명서를 참조하십시오.
Python 3의 경우 shxfe의 답변과 동일한 작업을 수행합니다.
def print_list(my_list):
print('\n'.join(my_list))
a = ['foo', 'bar', 'baz']
print_list(a)
어떤 결과물이 나오는지
foo
bar
baz
또한 유사한 도우미 기능을 사용하여 판다 데이터 프레임의 열을 빠르게 확인합니다.
def print_cols(df):
print('\n'.join(df.columns))
다른 답변에서 알 수 있듯이 pprint 모듈이 유용합니다.
그럼에도 불구하고 전체 목록을 로그 파일에 넣어야 하는 디버깅의 경우 pprint와 함께 모듈 로깅과 함께 pformat 메서드를 사용해야 할 수 있습니다.
import logging
from pprint import pformat
logger = logging.getLogger('newlogger')
handler = logging.FileHandler('newlogger.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.WARNING)
data = [ (i, { '1':'one',
'2':'two',
'3':'three',
'4':'four',
'5':'five',
'6':'six',
'7':'seven',
'8':'eight',
})
for i in xrange(3)
]
logger.error(pformat(data))
파일에 직접 기록해야 하는 경우에는 stream 키워드를 사용하여 출력 스트림을 지정해야 합니다. 참조
from pprint import pprint
with open('output.txt', 'wt') as out:
pprint(myTree, stream=out)
다른 답변들이 언급했듯이,pprint
원하는 것을 수행할 수 있는 훌륭한 모듈입니다.그러나 가져오기를 원하지 않고 개발 중에 디버깅 출력만 인쇄하려는 경우 출력을 근사화할 수 있습니다.
다른 답변 중 일부는 문자열에 적합하지만 클래스 개체와 함께 사용하면 오류가 발생합니다.TypeError: sequence item 0: expected string, instance found
.
더 복잡한 객체의 경우 클래스에 다음이 있는지 확인합니다.__repr__
원하는 속성 정보를 인쇄하는 방법:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
그런 다음 출력을 인쇄하려면 목록을 다음 목록에 매핑합니다.str
다음과 같은 기능:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
출력:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
또한 오버라이드와 같은 작업을 수행할 수 있습니다.__repr__
의 list
중첩된 예쁜 인쇄 형식을 가져오려면:
class my_list(list):
def __repr__(self):
return "[%s]" % ",\n ".join(map(str, self))
a = my_list(["first", 2, my_list(["another", "list", "here"]), "last"])
print a
기브즈
[first,
2,
[another,
list,
here],
last]
불행히도 2단계 들여쓰기는 없지만 빠른 디버그를 위해 유용할 수 있습니다.
이것은 제가 매우 자주 사용하는 생 파이썬의 방법입니다!
코드는 다음과 같습니다.
list = ["a", "b", "c", "d", "e", "f", "g"]
for i in range(len(list)):
print(list[i])
출력:
a
b
c
d
e
f
g
목록에서 루프할 수도 있습니다.
def fun():
for i in x:
print(i)
x = ["1",1,"a",8]
fun()
언급URL : https://stackoverflow.com/questions/1523660/how-to-print-a-list-in-python-nicely
'code' 카테고리의 다른 글
Ansible MariaDB 10.1.47 암호가 강제되지 않음 (0) | 2023.08.26 |
---|---|
기본적으로 int가 아닌 정수 리터럴 유형? (0) | 2023.08.26 |
MSDeploy(Visual Studio)에서 App_Data 폴더를 삭제하지 않고 다른 모든 폴더를 삭제하도록 합니다. (0) | 2023.08.26 |
PowerShell의 URL에서 도메인 가져오기 (0) | 2023.08.26 |
원격 Git 분기를 삭제할 때 "오류: 정규화되지 않은 대상으로 푸시할 수 없습니다" (0) | 2023.08.26 |