2012-03-10 2 views
0

Есть много сообщений о разборе твиттера json, но ни один из них, который я видел, не решил мою проблему.синтаксический анализ unicoded tweet с использованием json python

Это код

import json 

file = open('tweet', 'r') 
tweet = file.read() 
#{"geo":null,"text":"Lmao!! what time? I dont finish evening cleaning till 5 RT \[email protected]_user: football anyone?.....i wanna have a kickabout :(\u201d"} 
#{"geo":null,"text":"Lmao!! what time? I dont finish evening cleaning till 5 RT @some_user: football anyone?.....i wanna have a kickabout :("} 
def parseStreamingTweet(tweet): 
    try: 
     singleTweetJson = json.loads(tweet) 
     for index in singleTweetJson: 
      if index == 'text': 
       print "text : ", singleTweetJson[index] 
    except ValueError: 
     print "Error ", tweet 
     print ValueError 
     return 

parseStreamingTweet(tweet) 

Это тестовая программа. Tweet приходит в поток и для проверки цели, я сохранил чириканье в файле и проверил. Существует отредактированная часть твиттера.

Может ли кто-нибудь сказать мне, как разобрать чириканье, которое является унифицированным. Первый твит в комментарии является унифицированным, а второй - нет. Сначала возникает ошибка, а при удалении строки уникода синтаксический анализ выполняется успешно. Каким может быть решение?

ответ

2

Я думаю, что ваш код работает, причиной ошибки является, вероятно, из-за UnicodeEncodeError, которая возникает, когда вы пытаетесь напечатать значение unicode для терминала. Я предполагаю, что вы вызываете сценарий в терминале, не поддерживающем unicode. Если вместо этого вы напечатали Repr значения Юникода, или (написал в выходной файл), то вероятно, будет работать:

print "text : ", repr(singleTweetJson[index]) 

Кроме того, его вообще плохая практика, чтобы скрыть определенные исключения/сообщения об ошибках с родовым догоняющий все исключения/сообщения об ошибках.

+0

спасибо! это сработало! но я печатал в поддерживаемом unicode терминале (я использую Netbeans IDE, и это поддерживает unicode.), и сообщение было напечатано в исключении, но не в тексте массива, так или иначе это сработало !!! благодаря! – Curiousity