2013-09-02 4 views
2

내 코드는 다음과 같습니다. 여기 TypeError : 목록 색인은 JSON을 사용하는 str이 아닌 정수 여야합니다.

f = open("test.json") 
data = json.load(f) 
loadmain = data['response']['users'] 
loadurl = loadmain['url'] 
print loadurl 

는 JSON 파일

{ 

    "meta": { 
"status": 200, 
"msg": "OK" 
    }, 

    "response": { 
"total_users": 23, 
"users": [ 
    { 
    "name": "test", 
    "url": "http://testurl.com", 
    "updated": 1378151341 
    } 
... 
.. 
. 

내가 그렇게 파이썬 초보자 감사이 방법에 대한 의견 오전, 나는 URL의 디코딩이 올바른 방법으로 수행되지 않습니다 확신합니다. 어쨌든, 내 주요 관심사; JSON의 "url"목록을 표시하고 싶지만 "TypeError : 목록 색인은 str이 아닌 정수 여야합니다."

제안 사항이 있으십니까?

+1

코드 예제에서는 정의되지 않은 변수'asd'를 사용합니다. – BrenBarn

+0

'data'와'asd'의 타입을 검사하십시오. 사전이 아닌리스트 일 수도 있습니다. –

+0

아아프,'asd'는'loadmain'을 의미합니다. – Ajukilibodin

답변

2

하나의 옵션 : 변수 loadmain에서

(알 수없는 asd 따로 따로) 당신은 그래서 당신이 뭔가를 할 필요가, 배열의 목록을 가지고 :

urls = [ user['url'] for user in loadmain ] 
+0

이것은 그것을했다! 고맙습니다!! – Ajukilibodin

2

문제가 loadurl = asd['url'] 인 것으로 의심됩니다. 지능형리스트를 사용하는 URL 목록을 검색 할 수

for x in loadmain: 
    loadurl = x['url'] 
+0

그걸 잘해 주셔서 감사합니다. 그러나 하나만로드합니다 (JSON 파일의 마지막 항목). 그 일에 대한 반복이 필요합니까? – Ajukilibodin

+0

글쎄, 당신은'loadurl'을 목록으로 만들고 추가하려고합니다. 그렇지 않으면 마지막 URL 만 얻게됩니다. 그러나 당신은 올바른 생각을 가지고 있습니다. –

+0

-1은 목록을 건너 뜀다 – volcano

관련 문제