0

我目前正在使用 Sentiment140 API 对一些推文进行分类。我完全用 Python 编写。一切都很好,但我在美化输出和存储它时遇到了问题。

我使用以下代码来存储检索到的数据:

data = json.dumps(values) # instead of urllib.urlencode(values)
response = urllib2.urlopen(url, data)
page = response.read()
print page
with open('result.json', 'w') as f:
  json.dump(page, f, indent=2)

打印语句给了我以下信息:

{"data":[{"id":"1","text":"How deep is your love - Micheal Buble Ft Kelly Rowland \\u00e2\\u2122\\u00a5","polarity":2,"meta":{"language":"en"}},{"id":"2","text":"RT @TrueTeenQuotes: #SongsThatNeverGetOld Nelly ft. Kelly Rowland - Dilemma","polarity":2,"meta":{"language":"en"}},{"id":"3","text":"RT @GOforCARL: Dilemma - Nelly Feat. Kelly Rowland #Ohh #SongsThatNeverGetOld","polarity":2,"meta":{"language":"en"}},{"id":"4","text":"#NP Kelly Rowland Grown Woman","polarity":2,"meta":{"language":"en"}}]}

这意味着我需要的所有数据......可悲的是在一排但没关系。现在我尝试以适当且更漂亮的格式保存数据。保存的文件如下所示:

"{\"data\":[{\"id\":\"1\",\"text\":\"How deep is your love - Micheal Buble Ft Kelly Rowland \\\\u00e2\\\\u2122\\\\u00a5\",\"polarity\":2,\"meta\":{\"language\":\"en\"}},{\"id\":\"2\",\"text\":\"RT @TrueTeenQuotes: #SongsThatNeverGetOld Nelly ft. Kelly Rowland - Dilemma\",\"polarity\":2,\"meta\":{\"language\":\"en\"}},{\"id\":\"3\",\"text\":\"RT @GOforCARL: Dilemma - Nelly Feat. Kelly Rowland #Ohh #SongsThatNeverGetOld\",\"polarity\":2,\"meta\":{\"language\":\"en\"}},{\"id\":\"4\",\"text\":\"#NP Kelly Rowland Grown Woman\",\"polarity\":2,\"meta\":{\"language\":\"en\"}}]}\n"

仍然排成一行,并带有所有“\”。我错过了哪个命令?

4

1 回答 1

0

自己找到了答案。虽然不知道是不是最美的方式:

# Encode file correctly
final = unicode(page, errors='ignore')
# Load file correctly
final = json.loads(final)
with open('result.json', 'w') as f:
    json.dump(final, f, indent=0)

做了工作。

于 2013-07-10T17:34:00.227 回答