JMTGR
80
2019-06-03 14:47:08
7
269

JSON 으로 출력된 값 중에 item 부분만 Python으로 빼내고 싶습니다.


안녕하세요?

다름이 아니라

JSON 으로 출력된 값 중에서 일정 부분만 빼내고 싶습니다. (Python)

위 사진에서 items 에 있는 0~9 번의 목록 중에 [title, link, image]를 따로 출력하고 싶습니다.

python 으로 작업중이며 정보들은 naver 검색 api 를 이용해서 얻은 정보입니다.

선배님들의 답변 감사드리겠습니다.

0
0
  • 답변 7

  • tteakuk
    196
    2019-06-03 14:54:32

    for, if문만 쓰면 되겠네요.

    for(var i=0; i<JSON.item.length; i++) {

     }

    0
  • JMTGR
    80
    2019-06-03 14:58:39

    //tteakuk

    import urllib.request
    import json
    client_id = ""
    client_secret = ""
    encText = urllib.parse.quote("고등어")
    url = "https://openapi.naver.com/v1/search/shop?query=" + encText # json 결과
    # url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과
    request = urllib.request.Request(url)
    request.add_header("X-Naver-Client-Id",client_id)
    request.add_header("X-Naver-Client-Secret",client_secret)
    response = urllib.request.urlopen(request)
    rescode = response.getcode()
    if(rescode==200):
        response_body = response.read()
        result = json.loads(response_body.decode('utf-8'))
        print(response_body.decode('utf-8'))
        items = result.get('items')
        print(result)
    else:
        print("Error Code:" + rescode)

    지금 상태는 위와 같은 코드인데 for, if문으로 가능할까요? ㅜ

    0
  • 0
  • tteakuk
    196
    2019-06-03 16:06:05
    1. import json
    2.  
    3. array1 = '{"restaurants": [{"restaurant": 1, "id": 2}, {"restaurant": 3, "id": 4}]}'
    4. data = json.loads(array1)
    5.  
    6. for restaurant in data['restaurants']:
    7. print restaurant['restaurant']
    8.  
    9. for restaurant in data['restaurants']:
    10. print restaurant['id']
    0
  • shaffron
    3k
    2019-06-03 16:31:48

    JMTGR // 거의 다 구현하셨네요


    # 17번째 줄 아래부터 작성해보면
    items = result.get('items')
    
    payload = []
    for item in items:
        container = defaultdict()  # from collections import defaultcollect 불러와야
        props = ['title', 'link' 'image']
        for prop in props:
            container[prop] = item.get(prop, None)
        payload.append(container)
    
    



    0
  • JMTGR
    80
    2019-06-03 17:37:35 작성 2019-06-03 17:47:04 수정됨

    tteakuk // 감사합니다! 참고하도록 하겠습니다.


    shaffron // from collections import defaultcollect 에서 빨간줄로 그어져있고 레퍼런스 어쩌고 하는데 안되네요 ㅠ 우선 감사합니다!

    0
  • shaffron
    3k
    2019-06-04 09:35:09

    JMTGR  // 아이고 오타가 났네요...

     from collections import defaultdict 입니다.


    dictionary 객체에 key가 없을 경우 오류가 발생하는데,

    defaultdict를 사용하면 None 객체나 사용자가 설정한 값으로 채워줄 수 있어 오류가 발생하지 않기에 사용했는데.. 오타를 냈네요 ㅋㅋ

    미안합니다 


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.