(2022년 11월 임시글을 수정하여 업로드한 글입니다. 기억이 완전하지 못해 원래 담으려 했던 것과 차이가 있을지도..)
"글도비-쉽고 편한 글쓰기 크롬 익스텐션" 프로젝트를 하면서 맞춤법 관련 "wrong-correct" 데이터셋이 필요했고, 국립 국어원에서 제공하는 모두의 말뭉치에서 "맞춤법 교정 말뭉치"를 사용하였다. 사용하고자 하는 말뭉치 우측 상단에 있는 "?"를 클릭하면 자료에 대한 설명과 json 파일의 포맷을 알 수 있다.
인터넷에 올라온 'json to csv' 코드는 대부분 아주 간단한 형태의 json 문서이다. 하지만 모두의 말뭉치는 Object와 list가 중첩된 형태로 되어 있었다. 이 작업을 할 때 두 개의 파일에서의 배열이 'utterance'와 'paragraph'로 서로 달라 주석처리를 해놓고 번갈아가며 실행을 시켰었는데, 지금 홈페이지에 들어가보니 둘다 utterance로 되어 있는 것 같다.
(변환한 파일에서 공백이 생겼었...나보다... 이래서 기술 블로그는 그때그때 써서 올려야,,)
아무튼! CSV의 줄바꿈 문자가 운영체제 마다 다르기 때문에 (Linux: \n, window: \r\n
) Windows는 \n
을 \r\n
으로 치환하므로 결과적으로 \r\r\n
이 되기 때문이다.
때문에 파일을 불러올 때, newline="" 코드를 추가하였다.
import csv
import json
f_name = "파일명1"
#f_name = "파일명2"
with open(f_name, "r", encoding = 'utf-8') as json_file:
data = json.load(json_file)
#messenger = data['document'][0]['utterance']
messenger = data['document'][0]['paragraph']
# now we will open a file for writing
data_file = open('data999.csv', 'w', encoding = 'utf-8', newline="")
# create the csv writer object
csv_writer = csv.writer(data_file)
count = 0
i=0
for i in range(0,len(data['document'])):
#messenger = data['document'][i]['utterance']
messenger = data['document'][i]['paragraph']
for msg in messenger:
if count == 0:
# Writing headers of CSV file
header = msg.keys()
csv_writer.writerow(header)
count += 1
# Writing data of CSV file
csv_writer.writerow(msg.values())
i+=1
data_file.close()