我是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 )
输出:[]
非常感谢您的帮助。
答案 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])