이 문서에서는 여러 중첩 JSON 개체가 포함된 JSON 파일에서 데이터를 추출하는 문제를 다룹니다. 이러한 파일은 대규모 데이터세트를 처리할 때 문제가 되는 경우가 많습니다.
다음과 같이 여러 JSON 개체가 포함된 JSON 파일을 고려하세요.
<code class="json">{"ID":"12345","Timestamp":"20140101", "Usefulness":"Yes", "Code":[{"event1":"A","result":"1"},…]} {"ID":"1A35B","Timestamp":"20140102", "Usefulness":"No", "Code":[{"event1":"B","result":"1"},…]} {"ID":"AA356","Timestamp":"20140103", "Usefulness":"No", "Code":[{"event1":"B","result":"0"},…]} …</code>
작업은 추출하는 것입니다. 각 개체의 "타임스탬프" 및 "유용성" 값을 데이터 프레임으로:
Timestamp | Usefulness |
---|---|
20140101 | Yes |
20140102 | No |
20140103 | No |
... | ... |
이 문제를 해결하기 위해 Python에서 json.JSONDecoder.raw_decode 메서드를 사용합니다. . 이 방법을 사용하면 "스택된" JSON 개체의 큰 문자열을 디코딩할 수 있습니다. 파싱된 객체의 마지막 위치와 유효한 객체를 반환합니다. 반환된 위치를 raw_decode에 다시 전달하면 해당 지점부터 구문 분석을 재개할 수 있습니다.
<code class="python">from json import JSONDecoder, JSONDecodeError import re NOT_WHITESPACE = re.compile(r'\S') def decode_stacked(document, pos=0, decoder=JSONDecoder()): while True: match = NOT_WHITESPACE.search(document, pos) if not match: return pos = match.start() try: obj, pos = decoder.raw_decode(document, pos) except JSONDecodeError: # Handle errors appropriately raise yield obj s = """ {“a”: 1} [ 1 , 2 ] """ for obj in decode_stacked(s): print(obj)</code>
이 코드는 문자열 s의 JSON 개체를 반복하고 각 개체를 인쇄합니다.
{'a': 1} [1, 2]
제공된 솔루션은 단일 파일에 포함된 여러 중첩 JSON 개체에서 데이터를 추출하는 문제를 효과적으로 해결합니다. json.JSONDecoder.raw_decode 메서드를 활용하고 잠재적인 오류를 처리함으로써 대규모 데이터 세트를 효율적으로 처리할 수 있습니다. decode_stacked 함수는 이러한 파일 형식을 처리하기 위한 재사용 가능한 도구로 사용될 수 있습니다.
위 내용은 Python에서 여러 내장 개체를 사용하여 JSON 데이터를 효율적으로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!