仍然空的json数组甚至在Python中附加

时间:2017-06-15 07:40:09

标签: python json

看来我的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
[]

3 个答案:

答案 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)