In [3]:
import requests
from bs4 import BeautifulSoup
In [4]:
lv2_data_json_url="https://askdjango.github.io/lv2/data.json"
json_string=requests.get(lv2_data_json_url).text
In [41]:
json_string  #type은 str
Out[41]:
'[\n    {\n        "name": "개발환경 구축하기",\n        "url": "https://nomade.kr/vod/setup/"\n    },\n    {\n        "name": "파이썬 차근차근 시작하기",\n        "url": "https://nomade.kr/vod/python/"\n    },\n    {\n        "name": "크롤링 차근차근 시작하기",\n        "url": "https://nomade.kr/vod/crawling/"\n    },\n    {\n        "name": "파이썬으로 업무 자동화",\n        "url": "https://nomade.kr/vod/automation/"\n    },\n    {\n        "name": "장고 - 기본편",\n        "url": "https://nomade.kr/vod/django/"\n    },\n    {\n        "name": "장고걸스 튜토리얼",\n        "url": "https://nomade.kr/vod/djangogirls/"\n    },\n    {\n        "name": "장고 - Form/ModelForm 잘 알고 쓰기",\n        "url": "https://nomade.kr/vod/form/"\n    },\n    {\n        "name": "장고 - 클래스 기반 뷰. 잘 알고 쓰기",\n        "url": "https://nomade.kr/vod/cbv/"\n    },\n    {\n        "name": "장고 - 결제 시스템 연동",\n        "url": "https://nomade.kr/vod/payment/"\n    },\n    {\n        "name": "장고 - 웹 프론트엔드 시작편",\n        "url": "https://nomade.kr/vod/frontend/"\n    },\n    {\n        "name": "장고 - 다양한 위젯 만들기",\n        "url": "https://nomade.kr/vod/widgets/"\n    },\n    {\n        "name": "장고 - API 서버 만들기 및 초간단 안드로이드 앱 만들기",\n        "url": "https://nomade.kr/vod/apiserver/"\n    },\n    {\n        "name": "장고 - 하이브리드 앱 만들기",\n        "url": "https://nomade.kr/vod/hybrid/"\n    },\n    {\n        "name": "장고 - 서비스 배포하기",\n        "url": "https://nomade.kr/vod/deploy/"\n    },\n    {\n        "name": "장고 - 실전편 (Feat. 배달의 민족 St. 만들기)",\n        "url": "https://nomade.kr/vod/django-baemin/"\n    },\n    {\n        "name": "장고 - 실전편 (Feat. 인스타그램 St. 만들기)",\n        "url": "https://nomade.kr/vod/django-instagram/"\n    }\n]\n'
In [8]:
import json
result=json.loads(json_string) #type은 리스트
In [10]:
result
Out[10]:
[{'name': '개발환경 구축하기', 'url': 'https://nomade.kr/vod/setup/'},
 {'name': '파이썬 차근차근 시작하기', 'url': 'https://nomade.kr/vod/python/'},
 {'name': '크롤링 차근차근 시작하기', 'url': 'https://nomade.kr/vod/crawling/'},
 {'name': '파이썬으로 업무 자동화', 'url': 'https://nomade.kr/vod/automation/'},
 {'name': '장고 - 기본편', 'url': 'https://nomade.kr/vod/django/'},
 {'name': '장고걸스 튜토리얼', 'url': 'https://nomade.kr/vod/djangogirls/'},
 {'name': '장고 - Form/ModelForm 잘 알고 쓰기', 'url': 'https://nomade.kr/vod/form/'},
 {'name': '장고 - 클래스 기반 뷰. 잘 알고 쓰기', 'url': 'https://nomade.kr/vod/cbv/'},
 {'name': '장고 - 결제 시스템 연동', 'url': 'https://nomade.kr/vod/payment/'},
 {'name': '장고 - 웹 프론트엔드 시작편', 'url': 'https://nomade.kr/vod/frontend/'},
 {'name': '장고 - 다양한 위젯 만들기', 'url': 'https://nomade.kr/vod/widgets/'},
 {'name': '장고 - API 서버 만들기 및 초간단 안드로이드 앱 만들기',
  'url': 'https://nomade.kr/vod/apiserver/'},
 {'name': '장고 - 하이브리드 앱 만들기', 'url': 'https://nomade.kr/vod/hybrid/'},
 {'name': '장고 - 서비스 배포하기', 'url': 'https://nomade.kr/vod/deploy/'},
 {'name': '장고 - 실전편 (Feat. 배달의 민족 St. 만들기)',
  'url': 'https://nomade.kr/vod/django-baemin/'},
 {'name': '장고 - 실전편 (Feat. 인스타그램 St. 만들기)',
  'url': 'https://nomade.kr/vod/django-instagram/'}]

가져온 json은 str , 이를 json.loads로 리스트로 만들 수 있다.

In [29]:
againjson=json.dumps(result) #dumps를 통해 다시 json형식으로 바꿀 수 있다.
In [36]:
againjson #type은 str 이다.
Out[36]:
'[{"name": "\\uac1c\\ubc1c\\ud658\\uacbd \\uad6c\\ucd95\\ud558\\uae30", "url": "https://nomade.kr/vod/setup/"}, {"name": "\\ud30c\\uc774\\uc36c \\ucc28\\uadfc\\ucc28\\uadfc \\uc2dc\\uc791\\ud558\\uae30", "url": "https://nomade.kr/vod/python/"}, {"name": "\\ud06c\\ub864\\ub9c1 \\ucc28\\uadfc\\ucc28\\uadfc \\uc2dc\\uc791\\ud558\\uae30", "url": "https://nomade.kr/vod/crawling/"}, {"name": "\\ud30c\\uc774\\uc36c\\uc73c\\ub85c \\uc5c5\\ubb34 \\uc790\\ub3d9\\ud654", "url": "https://nomade.kr/vod/automation/"}, {"name": "\\uc7a5\\uace0 - \\uae30\\ubcf8\\ud3b8", "url": "https://nomade.kr/vod/django/"}, {"name": "\\uc7a5\\uace0\\uac78\\uc2a4 \\ud29c\\ud1a0\\ub9ac\\uc5bc", "url": "https://nomade.kr/vod/djangogirls/"}, {"name": "\\uc7a5\\uace0 - Form/ModelForm \\uc798 \\uc54c\\uace0 \\uc4f0\\uae30", "url": "https://nomade.kr/vod/form/"}, {"name": "\\uc7a5\\uace0 - \\ud074\\ub798\\uc2a4 \\uae30\\ubc18 \\ubdf0. \\uc798 \\uc54c\\uace0 \\uc4f0\\uae30", "url": "https://nomade.kr/vod/cbv/"}, {"name": "\\uc7a5\\uace0 - \\uacb0\\uc81c \\uc2dc\\uc2a4\\ud15c \\uc5f0\\ub3d9", "url": "https://nomade.kr/vod/payment/"}, {"name": "\\uc7a5\\uace0 - \\uc6f9 \\ud504\\ub860\\ud2b8\\uc5d4\\ub4dc \\uc2dc\\uc791\\ud3b8", "url": "https://nomade.kr/vod/frontend/"}, {"name": "\\uc7a5\\uace0 - \\ub2e4\\uc591\\ud55c \\uc704\\uc82f \\ub9cc\\ub4e4\\uae30", "url": "https://nomade.kr/vod/widgets/"}, {"name": "\\uc7a5\\uace0 - API \\uc11c\\ubc84 \\ub9cc\\ub4e4\\uae30 \\ubc0f \\ucd08\\uac04\\ub2e8 \\uc548\\ub4dc\\ub85c\\uc774\\ub4dc \\uc571 \\ub9cc\\ub4e4\\uae30", "url": "https://nomade.kr/vod/apiserver/"}, {"name": "\\uc7a5\\uace0 - \\ud558\\uc774\\ube0c\\ub9ac\\ub4dc \\uc571 \\ub9cc\\ub4e4\\uae30", "url": "https://nomade.kr/vod/hybrid/"}, {"name": "\\uc7a5\\uace0 - \\uc11c\\ube44\\uc2a4 \\ubc30\\ud3ec\\ud558\\uae30", "url": "https://nomade.kr/vod/deploy/"}, {"name": "\\uc7a5\\uace0 - \\uc2e4\\uc804\\ud3b8 (Feat. \\ubc30\\ub2ec\\uc758 \\ubbfc\\uc871 St. \\ub9cc\\ub4e4\\uae30)", "url": "https://nomade.kr/vod/django-baemin/"}, {"name": "\\uc7a5\\uace0 - \\uc2e4\\uc804\\ud3b8 (Feat. \\uc778\\uc2a4\\ud0c0\\uadf8\\ub7a8 St. \\ub9cc\\ub4e4\\uae30)", "url": "https://nomade.kr/vod/django-instagram/"}]'
In [39]:
json.loads(againjson) #이를 다시 리스트형태로 변환
Out[39]:
[{'name': '개발환경 구축하기', 'url': 'https://nomade.kr/vod/setup/'},
 {'name': '파이썬 차근차근 시작하기', 'url': 'https://nomade.kr/vod/python/'},
 {'name': '크롤링 차근차근 시작하기', 'url': 'https://nomade.kr/vod/crawling/'},
 {'name': '파이썬으로 업무 자동화', 'url': 'https://nomade.kr/vod/automation/'},
 {'name': '장고 - 기본편', 'url': 'https://nomade.kr/vod/django/'},
 {'name': '장고걸스 튜토리얼', 'url': 'https://nomade.kr/vod/djangogirls/'},
 {'name': '장고 - Form/ModelForm 잘 알고 쓰기', 'url': 'https://nomade.kr/vod/form/'},
 {'name': '장고 - 클래스 기반 뷰. 잘 알고 쓰기', 'url': 'https://nomade.kr/vod/cbv/'},
 {'name': '장고 - 결제 시스템 연동', 'url': 'https://nomade.kr/vod/payment/'},
 {'name': '장고 - 웹 프론트엔드 시작편', 'url': 'https://nomade.kr/vod/frontend/'},
 {'name': '장고 - 다양한 위젯 만들기', 'url': 'https://nomade.kr/vod/widgets/'},
 {'name': '장고 - API 서버 만들기 및 초간단 안드로이드 앱 만들기',
  'url': 'https://nomade.kr/vod/apiserver/'},
 {'name': '장고 - 하이브리드 앱 만들기', 'url': 'https://nomade.kr/vod/hybrid/'},
 {'name': '장고 - 서비스 배포하기', 'url': 'https://nomade.kr/vod/deploy/'},
 {'name': '장고 - 실전편 (Feat. 배달의 민족 St. 만들기)',
  'url': 'https://nomade.kr/vod/django-baemin/'},
 {'name': '장고 - 실전편 (Feat. 인스타그램 St. 만들기)',
  'url': 'https://nomade.kr/vod/django-instagram/'}]

함수의 패킹과 언패킹

In [14]:
def fun(**result): #키워드 인자를 마음대로 받을 수 있음.
    return result  # return값은 이 키워드인자로 만든 사전형식이 됨.
    
In [16]:
fun(name="namevalue",url="urlvalue")
Out[16]:
{'name': 'namevalue', 'url': 'urlvalue'}
In [17]:
re=result[0]
In [21]:
re.keys()
Out[21]:
dict_keys(['name', 'url'])
In [22]:
re.values()
Out[22]:
dict_values(['개발환경 구축하기', 'https://nomade.kr/vod/setup/'])
In [23]:
re.items()
Out[23]:
dict_items([('name', '개발환경 구축하기'), ('url', 'https://nomade.kr/vod/setup/')])
In [25]:
re
Out[25]:
{'name': '개발환경 구축하기', 'url': 'https://nomade.kr/vod/setup/'}
In [26]:
fun(**re) # **re는 re(dic 개체)를 unpacking 하여 name=,,, url=... 처럼 입력하게 만듦.
Out[26]:
{'name': '개발환경 구축하기', 'url': 'https://nomade.kr/vod/setup/'}
In [27]:
type(fun(**re))
Out[27]:
dict
In [ ]: