>백엔드 개발 >파이썬 튜토리얼 >Python의 `json.JSONDecoder.raw_decode`를 사용하여 단일 파일에서 여러 JSON 개체를 효율적으로 추출하는 방법은 무엇입니까?

Python의 `json.JSONDecoder.raw_decode`를 사용하여 단일 파일에서 여러 JSON 개체를 효율적으로 추출하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-29 04:48:02780검색

How to Extract Multiple JSON Objects from a Single File Efficiently Using Python's `json.JSONDecoder.raw_decode`?

단일 파일에서 여러 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.