[python] Python을 사용하여 파일에 예쁜 인쇄 JSON 데이터

클래스 용 프로젝트에는 Twitter JSON 데이터 구문 분석이 포함됩니다. 데이터를 가져 와서 별 문제없이 파일로 설정하고 있지만 모두 한 줄에 있습니다. 내가하려는 데이터 조작에는 괜찮지 만, 파일을 읽기가 엄청나게 어렵고 잘 검사 할 수 없어서 데이터 조작 부분에 대한 코드 작성이 매우 어렵습니다.

누구든지 Python 내에서 수행하는 방법을 알고 있습니까 (즉, 작업 할 수없는 명령 줄 도구를 사용하지 않음)? 지금까지 내 코드는 다음과 같습니다.

header, output = client.request(twitterRequest, method="GET", body=None,
                            headers=None, force_auth_header=True)

# now write output to a file
twitterDataFile = open("twitterData.json", "wb")
# magic happens here to make it pretty-printed
twitterDataFile.write(output)
twitterDataFile.close()

참고 저에게 simplejson 문서 등을 알려주는 사람들에게 감사드립니다. 그러나 제가 말씀 드렸듯이 이미 살펴 보았으며 계속해서 도움이 필요합니다. 진정으로 도움이되는 답변은 거기에서 발견 된 예보다 더 자세하고 설명 적입니다. 감사

또한 :
Windows 명령 줄에서 시도해보십시오.

more twitterData.json | python -mjson.tool > twitterData-pretty.json

결과는 다음과 같습니다.

Invalid control character at: line 1 column 65535 (char 65535)

내가 사용중인 데이터를 주겠지 만, 용량이 매우 크고 파일을 만드는 데 사용한 코드를 이미 보셨을 것입니다.



답변

선택적 인수를 사용해야합니다 indent.

header, output = client.request(twitterRequest, method="GET", body=None,
                            headers=None, force_auth_header=True)

# now write output to a file
twitterDataFile = open("twitterData.json", "w")
# magic happens here to make it pretty-printed
twitterDataFile.write(simplejson.dumps(simplejson.loads(output), indent=4, sort_keys=True))
twitterDataFile.close()


답변

JSON을 구문 분석 한 다음 다음과 같은 들여 쓰기로 다시 출력 할 수 있습니다.

import json
mydata = json.loads(output)
print json.dumps(mydata, indent=4)

자세한 내용은 http://docs.python.org/library/json.html 을 참조 하십시오 .


답변

import json

with open("twitterdata.json", "w") as twitter_data_file:
    json.dump(output, twitter_data_file, indent=4, sort_keys=True)

json.dumps()나중에 문자열을 구문 분석하지 않으려면 필요 하지 않으며 json.dump(). 너무 빠릅니다.


답변

파이썬의 json 모듈을 사용 하여 예쁜 인쇄를 할 수 있습니다 .

>>> import json
>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
{
    "4": 5,
    "6": 7
}

따라서 귀하의 경우

>>> print json.dumps(json_output, indent=4)


답변

예쁜 형식을 원하는 기존 JSON 파일이 이미있는 경우 다음을 사용할 수 있습니다.

    with open('twitterdata.json', 'r+') as f:
        data = json.load(f)
        f.seek(0)
        json.dump(data, f, indent=4)
        f.truncate()


답변

새 * .json을 생성하거나 기존 josn 파일을 수정하는 경우 pretty view json 형식에 “indent”매개 변수를 사용하십시오.

import json
responseData = json.loads(output)
with open('twitterData.json','w') as twitterDataFile:    
    json.dump(responseData, twitterDataFile, indent=4)


답변

import json
def writeToFile(logData, fileName, openOption="w"):
  file = open(fileName, openOption)
  file.write(json.dumps(json.loads(logData), indent=4)) 
  file.close()