decoding / encoding
일을 시작하고 맡은 일 중 첫번째까 api를 통해 나온 데이터를 jpg로 바꾸는 일이었다.
우선 데이터가 base64로 되어있는 이미지였기 때문에 base64를 import 했다.
근데 문제는 데이터가 오브젝트 안에 오브젝트의 리스트에 있었다.
그래서 빼내오는 것이 난감했다.
k = {"result": {"code": "", "extraMessage": "", "message": "성공", "transactionId": ""}, "data": {
"resRegisterEntriesList": [{"resAttachDocument": ""},
이런 형태였다.
import base64
b = k['data']["resRegisterEntriesList"]
for num, i in enumerate(b):
f = open("text{}.jpg".format(num+1), "wb")
f.write(base64.b64decode(i["resAttachDocument"]))
f.close()
그래서 이렇게 뽑아오기로 했다.
근데 문제는 response가 나오는데 시간이 걸려서 바로 이걸 실행하면 jpg로 나오지 않는다는 것이다. (이미 나온 걸 response = 처럼 변수에 할당한 건 지연시간이 없으니까 jpg로 나올 수 있다..)
그래서 앞으로 해결해야하긴 하는데
1. max time을 줘서 시간을 기다리게 한다음 jpg로 뽑아낸다.
음... 이거 외에는 아직은 방법을 모르겠다.
더 찾아봐야겠다.
2. 데이터를 json으로 저장할 때 한글이 그대로 저장하는 법
res = {"result": {"code": "", "extraMessage": "", "message": "성공", "transactionId": ""}, "data": {"resRegisterEntriesList": [{"resDocTitle": "(말소사항 포함) - 집합건물", "resRealty": "경기도 ", ....
다음과 같이 그대로 txt 파일로 저장하고 싶었다.
# -*- coding: utf-8 -*-
import json
with open('convert.txt', 'w', encoding="utf-8") as convert_file:
convert_file.write(json.dumps(res, ensure_ascii=False))
해결 방법은 간단했다.
# -*- coding: utf-8 -*-
이걸 맨 위에다가 적어줘야한다.
그리고 ensure_ascii=False
이걸 써줘야 유니코드로 변환되서 저장되는 것을 막을 수 있다. 자세히 설명하자면,
위 사진을 보면 ensure_ascii 파라미터가 기본적으로 True인걸 볼 수 있다. 그래서 이 파라미터를 False로 바꿔주게 되면 문자가 그대로 출력될 수 있게 된다.
그럼 convert.txt라는 파일이 w(쓰기) 모드로 encoding되는데, 이걸 convert_file이라고 명명했다.
이 convert_file을 json으로 dump해서 write(쓰기)하는데, res라고 변수 지정한 것을 쓴다. 근데 ascii로 변환하는 것을 막는다.
{"result": {"code": "", "extraMessage": "", "message": "성공", "transactionId": ""}, "data": {"resRegisterEntriesList": [{"resDocTitle": "(말소사항 포함) - 집합건물", "resRealty": "경기도 ",
그럼 결과물이 제대로 나오는 것을 볼 수 있다.
Author And Source
이 문제에 관하여(decoding / encoding), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wlgns410/decoding-encoding저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)