看来我的json数组仍然是空的,甚至已经附加了数据对象。
我的代码
tweets_data_path = 'twitter_test_data.txt'
tweets_data = []
tweets_file = open(tweets_data_path, "r")
for line in tweets_file:
try:
tweet = json.dumps(json.loads(line))
print tweet
tweet["sentiment"] = raw_input('provide input (sentiment): ')
tweets_data.append(tweet)
except:
continue
pprint(tweets_data)
我的数据
{"created_at":"Sun Apr 16 02:00:14 +0000 2017","id":853427785339084800,"id_str":"853427785339084800"}
{"created_at":"Sun Apr 16 02:03:24 +0000 2017","id":853428582613475332,"id_str":"853428582613475332"}
输出
python twitter_update_sentiment.py
{"created_at": "Sun Apr 16 02:00:14 +0000 2017", "id": 853427785339084800, "id_str": "853427785339084800"}
provide input (sentiment): 1
{"created_at": "Sun Apr 16 02:03:24 +0000 2017", "id": 853428582613475332, "id_str": "853428582613475332"}
provide input (sentiment): 2
[]
答案 0 :(得分:2)
tweet
是一个字符串,您不能将其用作字典,您必须使用json.loads
:
tweet = json.loads(line) # no `json.dumps`
print tweet
tweet["sentiment"] = raw_input('provide input (sentiment): ') # error was here
tweets_data.append(tweet)
目前错误是当您尝试设置新字段时,但是您使用try .. except
继续进行并完全错过它。调试器中的步骤可以很容易地解决它。
如果您仍想使用json.dumps
,请在字典中设置字段后使用它。
答案 1 :(得分:0)
您也可以在此行之后执行以下操作,
tweet = json.dumps(json.loads(line))
tweet = ast.literal_eval(tweet)
不要忘记导入ast,
import ast
答案 2 :(得分:0)
问题是json.dumps返回str(你可能认为它是字典)。
import json
from pprint import pprint
tweets_data_path = 'tweets.txt'
tweets_data = []
tweets_file = open(tweets_data_path, "r")
for line in tweets_file:
tweet = json.loads(line)
tweet["sentiment"] = str(raw_input('provide input (sentiment): '))
tweets_data.append(tweet)
pprint(tweets_data)