단일 파일에서 여러 JSON 개체를 반복적으로 추출
여러 JSON 개체가 포함된 JSON 파일을 처리할 때는 효율적인 방법을 찾는 것이 중요합니다. 각 객체에서 특정 데이터 요소를 추출합니다.
한 가지 접근 방식은 Python의 json.JSONDecoder.raw_decode 함수를 활용하는 것입니다. 이 함수를 사용하면 루트 배열로 래핑되지 않은 경우에도 여러 개체가 포함된 큰 JSON 문자열을 디코딩할 수 있습니다.
시작하려면 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 error raise yield obj</code>
이 방법을 사용하면 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>
코드는 다음 루프를 사용하여 "타임스탬프" 및 "유용성" 값을 추출할 수 있습니다.
<code class="python">import pandas as pd data = [] for obj in decode_stacked(json_string): data.append([obj["Timestamp"], obj["Usefulness"]]) df = pd.DataFrame(data, columns=["Timestamp", "Usefulness"])</code>
이것은 방법은 단일 파일에서 여러 JSON 개체를 추출하는 유연하고 효율적인 방법을 제공하므로 복잡한 JSON 구조의 데이터를 표 형식으로 수집할 수 있습니다.
위 내용은 Python의 `json.JSONDecoder.raw_decode`를 사용하여 단일 파일에서 여러 JSON 개체를 효율적으로 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!