분리된 JSON 하나로 합치는 법

히제오·2020년 12월 17일
0

파이썬 til

목록 보기
4/9

연속적인 이름을 가진 JSON 파일을 여러개 가지고 있는데, 그걸 합쳐서 파이썬에서 정제하고 싶을 때 어떻게 해야할까? 나의 경우 날짜 이름으로 분리된 JSON 파일을 가지고 있었다. 그래서 date라는 변수에 필요로하는 날짜의 리스트를 할당해준뒤, 아래와 같이 코드를 만들어보았다.

# JSON 파일 불러와서 변수에 저장하기
for (i, dt) in enumerate(date):
    file = open(f"/{dt}.json","r",encoding='utf-8')
    globals()['json_'+ str(i)] = json.load(file)

# 전체 JSON 하나로 합치기
json_list = []
for (i, dt) in enumerate(date):
    json_list.append(globals()['json_'+ str(i)])

JSON 파일을 readable 한 형태 "r"로 불러온 뒤, globals 함수를 사용해 각각 변수에 할당해주었다. 그리고 각각의 JSON 변수들을 하나의 리스트 안에 넣어주었다.

중요한 부분은 여기서부터! 변수에 넣어준 JSON 파일들 각각은 지금 이런 모양일 것이다.

{'Nome bollettino': 'Bollettino 1', 'Causale': '1'}

이렇게 생긴 애들을, 아래와 같은 결과물로 합치려면 어떻게 해야할까?

[{'Causale': '1', 'Nome bollettino': 'Bollettino 1', 'Numero': '1'},
    {'Causale': '2', 'Nome bollettino': 'Bollettino 2', 'Numero': '2'},
    {'Causale': '3', 'Nome bollettino': 'Bollettino 3', 'Numero': '3'},
    {'Causale': '4', 'Nome bollettino': 'Bollettino 4', 'Numero': '4'},
    {'Causale': '5', 'Nome bollettino': 'Bollettino 5', 'Numero': '5'},
    {'Causale': '6', 'Nome bollettino': 'Bollettino 6', 'Numero': '6'},
    {'Causale': '7', 'Nome bollettino': 'Bollettino 7', 'Numero': '7'},
    {'Causale': '8', 'Nome bollettino': 'Bollettino 8', 'Numero': '8'},
    {'Causale': '9', 'Nome bollettino': 'Bollettino 9', 'Numero': '9'},
    {'Causale': '10', 'Nome bollettino': 'Bollettino 10', 'Numero': '10'}]

즉, 한 리스트 안에 여러개의 딕셔너리가 있는 방식으로 합쳐야 한다... (여기서 머리가 정말 아팠다....)
여러가지 방법을 시도해보았지만, 효과를 보았던 것은 아래의 방법. list(chain.from_iterable( JSON 할당한 변수들의 리스트 )) 를 변수에 할당하면 된다.

slack = list(chain.from_iterable(json_list))

이렇게 하면, JSON 파일을 하나로 합칠 수 있고 JSON 세부의 데이터에 딕셔너리 접근하는 방식으로 접근할 수 있다!

참고했던 글은 여기

profile
삽질 전문가. 모든 일에 진심인 편.

0개의 댓글