json 파일은 아래와 같이 저장되어 있다.
[
{"title": "Oh Boy", "songId": "30179107", "artist": "AOA", "img": "aaa.jpg"},
{"title": "With ELVIS", "songId": "30179108", "artist": "AOA", "img": "bbb.jpg"},
{"title": "Good Luck", "songId": "8181755", "artist": "AOA", "img": "ccc.jpg"},
...
]
json 구성 요소
더보기
1. 배열: 대괄호[]로 표현됨
2. 객체: 중괄호{}로 표현하며, 다수의 요소(속성)을 갖음
3. 요소: 속성으로 부르기도 하며, key:value 형태로 표현됨
"AOA":[
{"title":"날 보러 와요","album":"New Moon","year":"2019"},
{"title":"빙글 뱅글","album":"Bingle Bangle","year":"2018"}
],
"체리블렛":[
{"title":"무릎을 탁 치고", "album":"무릎을 탁 치고", "year":"2020"},
{"title":"네가 참 좋아", "album":"Love Adventure", "year":"2019"}
]
코드의 절차는 아래와 같다.
- json 파일 읽어서 data에 저장
- csv 파일에 컬럼 헤더 저장
- json의 단일 객체 csv에 저장 (title 요소에 'inst.' 또는 'Inst.'가 포함되어 있을 경우 저장하지 않음)
import json
import csv
# music.json 파일을 읽어서 melon.csv 파일에 저장
with open('music.json', 'r', encoding = 'utf-8') as input_file, open('melon.csv', 'w', newline = '') as output_file :
data = json.load(input_file)
'''
data[0] 은 json 파일의 한 줄을 보관 {"title:"Super Duper", "songId": ...}
data[0]['컬럼명'] 은 첫 번째 줄의 해당 컬럼 element 보관
'''
f = csv.writer(output_file)
# csv 파일에 header 추가
f.writerow(["title", "songId", "artist", "img"])
# 노래 제목에 아래 문구가 포함 되어있을 경우 csv 저장하지 않음
matches = ['inst.', 'Inst.']
# write each row of a json file
for datum in data:
# exclude instrument versions
if any(x in datum["title"] for x in matches):
continue
f.writerow([datum["title"], datum["songId"], datum["artist"], datum["img"]])
참고한 코드들 ☞ 참조
'IT' 카테고리의 다른 글
[렌파이] 배포 준비 전 확인 사항 (0) | 2020.09.29 |
---|---|
[렌파이] 움짤(Animated Image) 넣기 (0) | 2020.09.13 |
[렌파이] 퀵메뉴(Quick Menu) UI 커스텀 (1) | 2020.09.13 |
[렌파이] 삽질한 부분 (2) | 2020.09.10 |
[Python] Web Crawling for Melon (0) | 2020.06.04 |