연속적인 이름을 가진 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 세부의 데이터에 딕셔너리 접근하는 방식으로 접근할 수 있다!
참고했던 글은 여기