无法将JSON转换为Python列表

时间:2017-04-14 03:24:53

标签: python json

我是Python的初学者。我在下面导入了Twitter测试源,将其更改为JSON字符串,但无法将其转换为Python列表。我尝试了两个版本的代码,其中一个是我在这个网站上找到的。下面列出了它们的输出以及输入字符串的一小段。我非常感谢有关如何解决这个问题的任何建议,因为我不清楚我做错了什么。

1)名为tweet_text_list的输入字符串的子集:

'[\'#mindset on #millionaire #goals #stocks #world #class\\xa0 #financial #boss #finesse #moves\\xa0 #study the #money #game… , "#Stocks #Investing #Stockmarket #nanoStockAnalysis Infosys\' (INFY) CEO Vishal Sikka on Q4 2017 Results - Earnin... ", \'RT @ElixiumNeptune: #Trading with #Bitcoin\#Forex #Stocks $ES $CL $GC $GOOG $AAPL $TSLA $SPY $QQQ…\']'

2)本网站的代码:

import json

tweets_data = []

class JSONObject:
    def __init__( self, dict ):
        vars(self).update( dict )

tweets_data = json.loads(tweet_text_list, object_hook= JSONObject)

输出:JSONDecodeError: Expecting value: line 1 column 2 (char 1)

3)另一个代码尝试:

tweets_data = []

for line in tweet_list:
    try:
        tweet = json.loads(line) 
        tweets_data.append(tweet) 
    except:
        continue
print(tweets_data )

输出:[]

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  

'[\'#mindset on #millionaire #goals #stocks #world #class\\xa0 #financial #boss #finesse #moves\\xa0 #study the #money #game… , "#Stocks #Investing #Stockmarket #nanoStockAnalysis Infosys\' (INFY) CEO Vishal Sikka on Q4 2017 Results - Earnin... ", \'RT @ElixiumNeptune: #Trading with #Bitcoin\#Forex #Stocks $ES $CL $GC $GOOG $AAPL $TSLA $SPY $QQQ…\']'

这不是JSON编码的字符串。 JSON仅使用引号而不是撇号来分隔字符串。 (您可以在here上找到JSON规范。)

将Python值转换为JSON编码字符串的正确方法是通过json.dumps(),如:

tweet_text_list = json.dumps([tweet.text for tweet in tweet_list])

答案 1 :(得分:1)

  

我使用了tweet_text_list = str([tweet_list中的推文的tweet.text])

这是一个Python字符串。如果你想要一个JSON字符串,试一试。

tweets_json = json.dumps([tweet.text for tweet in tweet_list])