2014-02-24 2 views
0

json에게는 매우 새로운 기능이므로 잘못된 용어를 사용하면 용서해주십시오. 업데이트 된 트위터 정보가있는 x 분마다 json 파일을 만들려고하는 모든 방법. 이제는 내가 트위터 API를 사용하여 필요한 것을 가져올 수 있지만 조금만 엉망으로 만들고 싶어한다는 것을 알았습니다. 내 문제는 새로운 키/dict 점점? 또는 for 문에 추가 된 각 새 항목에 대해 호출 된 내용. 그 쉼표를 지금은 내가 원하는 데이터를 얻고json 출력 python에 새 dict 추가

[ 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    }, <--- trying to get that little comma 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    } 
] 

을 얻으려고 노력하고 모든하지만 무엇 메신저

. 이 모든 것을 출력하지만, 그게 효과적이게되는 작은 문자 한 가지와는 다른 것입니다. 여기

[ 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    } <--- I get this instead for each new object 
    { 
    "name": "thename", 
    "date": "thedate", 
    "text": "thetext" 
    } 
] 

나머지는 단지 트위터의 OAuth 물건부터 설명해야 같은 코드 스 니펫입니다.

for player in users: 
    statuses = api.GetUserTimeline(screen_name=player, count=10) 
    print "[" 

    for s in statuses: 
      print json.dumps('timestamp': s.created_at,'username': s.user.name,'status': s.text) 
    print "]" 

내가 그 못생긴 내가 XD를 내기 방식 않은 적절한 알고 있기 때문에 시작과 끝 부분에있는 []를 할 수있는 더 좋은 방법이있다. 내가 json/python 항목에 초보자를 말했듯이 좋은 학습 경험.

+1

실제로 for 루프에 쉼표가 인쇄되지 않습니다. 그러나, @ 찌르는 사람의 대답은 갈 길입니다. json이 전체 json 메시지를 처리하게하십시오. – Will

답변

2

JSON 배열을 직접 작성하는 대신 JSON 인코더가 사용자를 대신해서 처리하도록해야합니다. 그렇게하기 위해서는 객체 목록을 json.dumps에 전달하면됩니다. 따라서 각 JSON 객체를 자체적으로 인쇄하는 대신 목록에서 수집하고 덤프하면됩니다.

allstatuses = [] 
for player in users: 
    statuses = api.GetUserTimeline(screen_name=player, count=10) 
    for s in statuses: 
     allstatuses.append({'timestamp': s.created_at, 'username': s.user.name, 'status': s.text}) 

print(json.dumps(allstatuses)) 
+0

매력처럼 작동하여 더 좋은 방법이 있어야한다는 것을 알고있었습니다. 그냥 좋은 튜토리얼을 찾을 수 없습니다. 고마워. – xLRDxREVENGEx