1228 TIL

looggi·2022년 12월 28일
2

스파르타 내배캠 AI-3

목록 보기
107/130
post-thumbnail

D-1

🎀 굿즈 데이터를 .json으로 저장하기

먼저 엑셀로 데이터를 만들고 .csv로 저장 (엑셀 만세🤩)
.csv ➜ .json
온라인에 무료로 변환해주는 사이트가 있어서 해봤더니 한글이 와장창 깨졌다 흑..

찾아보니 utf-8로 인코딩된 csv면 되는 것 같아서 엑셀에서 다시 csv파일을 열어서 csv utf-8로 저장했더니 csvjson.com 에서 정상적으로 변환이 됐다.

❌UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 182: illegal multibyte sequence

딕셔너리 형식으로 바꿔서 모델이랑 필드 칼럼을 만드려는데.. 또 디코드가 안돼버리기.. 흐ㅣ흐ㅣ encoding='UTF8' 부분을 추가해주면 정상적으로 읽을 수 있다

import json

file_path = "product_goods.json"
with open(file_path,'r', encoding='UTF8') as file:
    data = json.load(file)

http://daplus.net/python-rt%EB%B0%8F-wt%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C-%ED%8C%8C%EC%9D%BC-%EC%97%B4%EA%B8%B0/

❌list assignment index out of range
아 바보같이 goods를 빈 배열로 선언해주고선 goods[i]=dict 이러고 앉았다 ㅠㅠ 다 까먹어버리기 있냐고...

{'fields': {'category': 2,
            'content': '스톤커피의 자체제작 후드입니다!\n가을겨울 시즌 한정 상품인 점 참 고해주세요!',
            'created_at': '2022-12-18',
            'image': 'img/goods/STONECOFFEE_HOODIE.jpg',
            'like': [],
            'price': '58,000',
            'product_name': 'STONECOFFEE_HOODIE_grey'},
 'model': 'product.product'}

이렇게 나온당 흐ㅣ흐ㅣ 아 순서를 맞추고 싶은데 update 순서를 바꿔도, 패킹 언패킹을 써서 순서를 정해줘도 그냥 지 맘대로 fields가 먼저 나온다 아몰라 안중요하니까.. 키값이나 맞으면 됐지 안그래??? 아몰랑아몰랑아몰랑!!!!!!!!!!!!!!!!!!!!!!

# 안되는 애 하나
{"model":"product.product"}.update(goods[i])
# 안되는 애 둘
product_goods.append({**model, **goods[i]})

https://www.geeksforgeeks.org/python-append-items-at-beginning-of-dictionary/

딕셔너리 키값 순서를 바꿔볼라고 찾아본 것들

다시 .json파일로 바꾸기

dump() missing 1 required positional argument: 'fp'

with open('./product_goods_json.json','w',encoding='UTF-8-sig') as f:
    json.dump(product_goods, f, indent=4, ensure_ascii=False)

encoding='UTF-8-sig' ➜ 한글 깨지는 것 방지
ensure_ascii=False ➜ 한글이 유니코드로 변환되는 것 방지
*json.dumps는 obj(queryset)을 json형식의 str로 바꾼다

https://hhhh88.tistory.com/36

메모 ✏️
  • 제이슨은 스트링이기때문에 그냥 메모장에서도 열 수 있다는 장점이 있다
  • 스트링이기때문에 json형식을 python에서 딕셔너리로 바꾸려고 할 때는 ' '으로 감싸줘야한다.

🎀 .json를 db에 저장해서 사이트에 업로드하기

profile
looooggi

0개의 댓글