반응형
dict 문자열 출력을 멋지게 포맷하는 방법
다음과 같이 dict-output의 문자열을 포맷하는 쉬운 방법이 있는지 궁금합니다.
{
'planet' : {
'name' : 'Earth',
'has' : {
'plants' : 'yes',
'animals' : 'yes',
'cryptonite' : 'no'
}
}
}
..., 간단한 str (dict)는 당신에게 아주 읽기 어려운 것을 줄 것입니다 ...
{'planet' : {'has': {'plants': 'yes', 'animals': 'yes', 'cryptonite': 'no'}, 'name': 'Earth'}}
파이썬에 대해 아는만큼 많은 특수한 경우와 string.replace () 호출로 많은 코드를 작성해야합니다.이 문제 자체는 1000 줄 문제처럼 보이지 않습니다.
이 모양에 따라 dict를 포맷하는 가장 쉬운 방법을 제안하십시오.
출력으로 수행하는 작업에 따라 한 가지 옵션은 디스플레이에 JSON을 사용하는 것입니다.
import json
x = {'planet' : {'has': {'plants': 'yes', 'animals': 'yes', 'cryptonite': 'no'}, 'name': 'Earth'}}
print json.dumps(x, indent=2)
산출:
{
"planet": {
"has": {
"plants": "yes",
"animals": "yes",
"cryptonite": "no"
},
"name": "Earth"
}
}
이 접근 방식에 대한주의 사항은 일부 항목은 JSON으로 직렬화 할 수 없다는 것입니다. 사전에 클래스 또는 함수와 같은 직렬화 할 수없는 항목이 포함 된 경우 일부 추가 코드가 필요합니다.
pprint 사용
import pprint
x = {
'planet' : {
'name' : 'Earth',
'has' : {
'plants' : 'yes',
'animals' : 'yes',
'cryptonite' : 'no'
}
}
}
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(x)
이 출력
{ 'planet': { 'has': { 'animals': 'yes',
'cryptonite': 'no',
'plants': 'yes'},
'name': 'Earth'}}
pprint 형식을 사용하여 원하는 결과를 얻을 수 있습니다.
def format(d, tab=0):
s = ['{\n']
for k,v in d.items():
if isinstance(v, dict):
v = format(v, tab+1)
else:
v = repr(v)
s.append('%s%r: %s,\n' % (' '*tab, k, v))
s.append('%s}' % (' '*tab))
return ''.join(s)
print format({'has': {'plants': 'yes', 'animals': 'yes', 'cryptonite': 'no'}, 'name': 'Earth'}})
Output:
{
'planet': {
'has': {
'plants': 'yes',
'animals': 'yes',
'cryptonite': 'no',
},
'name': 'Earth',
},
}
Note that I'm sorta assuming all keys are strings, or at least pretty objects here
ReferenceURL : https://stackoverflow.com/questions/3733554/how-to-format-dict-string-outputs-nicely
반응형
'IT박스' 카테고리의 다른 글
웹 서비스 대 EJB 대 RMI, 장단점? (0) | 2021.01.06 |
---|---|
FileStream 및 폴더 생성 (0) | 2021.01.06 |
C # 구조체가 변경 불가능한 이유는 무엇입니까? (0) | 2021.01.06 |
Ado.net-Size 속성의 크기가 0으로 잘못되었습니다. (0) | 2021.01.06 |
'내 애플리케이션 평가'에 대한 Android 접근 방식 (0) | 2021.01.06 |