goodthings4me.tistory.com
파이썬 OrderedDict()는 순서 있는 딕셔너리이다. 순서가 없는 dict()에 3.6 버전에서부터 순서를 부여하긴 했으나 자료 호환성 측면과 순서가 중요한 경우, OrderedDict()를 사용한다. 그런데 문제는 중첩(nested)된 OrderedDict 형태였다.
파이썬 OrderedDict()를 dict() 타입으로 변환
최근 창호 관련 홍보, 부동산 매물 확보와 부동산 분양 등의 홍보 등을 위한 DM 주소 확보를 위해 공공데이터 포털에서 아파트 관련 정보를 추출하고 있는데, 아파트 단지 코드가 필요하여 관련 open api를 활용하여 추출해야 했다.
그런데, 샘플 데이터인 xml 데이터를 파싱 해서 보니 OrderedDict 타입으로 되어있었다.
이 자료를 엑셀로 저장하기 위해 dict 타입으로 변환해보았다.
from collections import OrderedDict
import json
orddict1 = OrderedDict([('s1', '제주특별자치도'), ('s2', '서귀포시')])
orddict2 = OrderedDict([('s1', '제주특별자치도'), ('s2', '서귀포시'), ('s3', OrderedDict([('bjdCode', '5013011200'), ('kaptCode', 'A10024215'), ('kaptName', 'e편한세상중문아파트')]))])
print(type(orddict1), type(orddict2))
# <class 'collections.OrderedDict'> <class 'collections.OrderedDict'>
- OrderedDict는 collections 모듈의 클래스다.
dict() 활용
dict1 = dict(orddict1)
print(dict1, type(dict1))
# {'s1': '제주특별자치도', 's2': '서귀포시'} <class 'dict'>
dict2 = dict(orddict2)
print(dict2, type(dict2))
# {'s1': '제주특별자치도', 's2': '서귀포시', 's3': OrderedDict([('bjdCode', '5013011200'), ('kaptCode', 'A10024215'), ('kaptName', 'e편한세상중문아파트')])} <class 'dict'>
- OrderedDict 타입을 dict()에 인자로 넣으면 dict 타입으로 변환된다.
- 그런데, 문제는 중첩(nested)된 OrderedDict 부분은 변환되지 않는다.
for nd in dict2:
if type(dict2[nd]) is OrderedDict:
ordd = dict(dict2[nd])
# print(ordd)
for d in ordd:
print(ordd[d])
else:
print(dict2[nd])
--------------------------------------
[결과]
제주특별자치도
서귀포시
5013011200
A10024215
e편한세상중문아파트
- for 문에서 타입을 조건 분기로 체크(type(dict2[nd]) is OrderedDict)하여 해결은 했으나, 더 좋은 방법이 있었다.
json 라이브러리로 변환하기
# import json 추가
jdict1 = json.loads(json.dumps(dict1))
print(jdict1, type(jdict1))
# {'s1': '제주특별자치도', 's2': '서귀포시'} <class 'dict'>
jdict2 = json.loads(json.dumps(dict2))
print(jdict2, type(jdict2))
# {'s1': '제주특별자치도', 's2': '서귀포시', 's3': {'bjdCode': '5013011200', 'kaptCode': 'A10024215', 'kaptName': 'e편한세상중문아파트'}} <class 'dict'>
- json.dumps()로 object를 JSON 형태의 str로 변환시켜주고, json.loads()는 str, bytes 타입을 python object로 변환시켜준다.
print(json.dumps(dict1))
# {"s1": "\uc81c\uc8fc\ud2b9\ubcc4\uc790\uce58\ub3c4", "s2": "\uc11c\uadc0\ud3ec\uc2dc"}
print(json.dumps(dict2))
# {"s1": "\uc81c\uc8fc\ud2b9\ubcc4\uc790\uce58\ub3c4", "s2": "\uc11c\uadc0\ud3ec\uc2dc", "s3": {"bjdCode": "5013011200", "kaptCode": "A10024215", "kaptName": "e\ud3b8\ud55c\uc138\uc0c1\uc911\ubb38\uc544\ud30c\ud2b8"}}
즉, OrderedDict() 객체인 dict1, dict2를 JSON 형태로 변환한 후, 다시 dict로 변환하여 for 문으로 추출하는 방법도 있다.
블로그 인기글
유튜브 영상 등의 URL 주소를 QR코드로 만들기
네이버 QR코드, makeQR, MUST QRcode, 무료 온라인 QRCode 생성기 등의 웹사이트에서 유튜브 영상 등의 URL을 입력하여 QR코드를 만들 수 있다. QR코드를 생성할 수 있는 사이트와 프로그램 URL 주소를 붙여넣기 한 후 "QR 코드 생성" 버튼을 클릭하면 큐알코드가 이미지로 생성되고, 다운로드도 할 수 있는 사이트 https://truedoum.com/useful/qrcode/ # 유튜브에서 동영상 URL을 복사하는 방법 유튜브에서 QR코드를 만들 동영상을 검색한다. 해당 동영상을 클릭한다. 동영상 위에서 마우스 우클릭 후 나오는 팝업창에서 “동영상 URL 복사”를 클릭하거나 영상 하단의 “공유”를 클릭하여 나온 창에서 URL를 복사한다. 아래의 웹사이트 중 하나를 선택한 후 복사..
goodthings4me.tistory.com
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter) ※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip ▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다) 실행하기 : 프로그램 실행 버튼 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료 실행 결과 확인 : 엑셀 파..
goodthings4me.tistory.com
폐업 신고 절차와 부가가치세 신고하는 방법
폐업 신고 시 세무서 안 가고 온라인으로 신고하는 방법인 '국세청 홈택스를 이용하여 폐업 신고하는 절차와 폐업 후 해야 하는 부가가치세 신고, 인건비 저리, 종합소득세 신고 등에 대해 포스팅합니다. 폐업 신고 시 홈택스 이용하는 방법과 부가가치세 등 신고 절차 여러가지 사유로 폐업을 해야 할 때, 예전에는 세무서를 방문해야 했지만 국세청 홈택스가 생긴 이후에는 사업자 등록이나 폐업 등을 인터넷으로 할 수가 있게 되었습니다. 특히, 코로나 시국인 요즘은 더더욱 온라인 신청 업무가 더 활성화되었죠. 폐업을 한다는 것 자체가 우울한 일인데, 발품을 파는 것보다는 커피 한잔 하면서 인터넷으로 간단하게 처리하는 게 좋을 듯하여 그 절차를 올려봅니다. 폐업은 폐업 신고와 함께 폐업 후 절차까지 모두 마쳐야 불이익이..
goodthings4me.tistory.com
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
파이썬으로 아파트 관련 기본 정보 추출해보기(공공데이터포털 API 사용법) (0) | 2022.01.24 |
---|---|
공공데이터 포털 api 사용법 - 파이썬으로 아파트 단지 코드 추출 (0) | 2022.01.23 |
공공데이터를 활용한 아파트 도로명 주소 등 추출해보기 (0) | 2022.01.18 |
웹 페이지 <script> 태그 CDATA, 넌 뭐하는 넘이니... (0) | 2022.01.15 |
네이버 쇼핑 아이디별 등록 상품 추출하는 법(파이썬 script 태그 스크래핑 가이드) (3) | 2022.01.14 |
댓글