모든 JSON 파일에 적용되지 않으니 해당 JSON 구조를 파악하고 코드를 변형해서 사용하자.
현재 내가 CSV 파일로 바꿀려고 하는 JSON 파일의 구조이다.
{
"description": "I love DATA.",
"external_url": "https://openseacreatures.io/3",
"image": "https://storage.googleapis.com/temp/temp/temp.png",
"name": "temp111",
"edition" : 1,
"attributes": [
{"trait_type":"Body","value":"Skinny"},
{"trait_type":"Face","value":"Smile"},],
}
여기서 edtion과 edtion에 따른 attribute만 CSV 파일에 저장하고자 한다. 예상되는 CSV 파일 형태는 아래와 같다.
edtion | Body | Face |
1 | Skinny | Smile |
import json
import csv
# JSON 파일 열기 및 읽기
def openRead_JSON_File(str_filepath):
with open(str_filepath, 'r') as file_JSON:
return json.load(file_JSON)
# JSON 파일에서 edition과 attributes 데이터 추출
def extract_EditionAttributes(dict_JSONData):
list_editionAttributes = []
for obj_item in dict_JSONData:
dict_singleEditionAttributes = {}
dict_singleEditionAttributes['edition'] = obj_item.get('edition', 'N/A')
list_attributes = obj_item.get('attributes', [])
for dict_attribute in list_attributes:
str_traitType = dict_attribute.get('trait_type', 'N/A')
str_value = dict_attribute.get('value', 'N/A')
dict_singleEditionAttributes[str_traitType] = str_value
list_editionAttributes.append(dict_singleEditionAttributes)
return list_editionAttributes
# CSV 파일 작성
def write_CSV_File(str_filepath, list_editionAttributes):
list_CSVHeader = ['edition']
for dict_item in list_editionAttributes:
for str_traitType in dict_item.keys():
if str_traitType not in list_CSVHeader:
list_CSVHeader.append(str_traitType)
with open(str_filepath, 'w', newline='', encoding='utf-8') as file_CSV:
writer_CSV = csv.DictWriter(file_CSV, fieldnames=list_CSVHeader)
writer_CSV.writeheader()
for dict_item in list_editionAttributes:
writer_CSV.writerow(dict_item)
print("작성 완료")
# 메인 함수
def main():
str_JSONFilepath = '(파일 경로)'
str_CSVFilepath = '(파일 경로)'
dict_JSONData = openRead_JSON_File(str_JSONFilepath)
list_editionAttributes = extract_EditionAttributes(dict_JSONData)
write_CSV_File(str_CSVFilepath, list_editionAttributes)
if __name__ == "__main__":
main()
'My Work > Work Automation(업무 자동화)' 카테고리의 다른 글
Chat GPTs 사용후기 (0) | 2023.11.21 |
---|---|
이미지 파일 크기 확인 코드(파이썬) (1) | 2023.11.09 |