Python tweepy如何将tweets导出为txt或json?

Python tweepy如何将tweets导出为txt或json?,python,json,twitter,tweepy,Python,Json,Twitter,Tweepy,我正在使用tweepy捕获twitter数据,我想知道我是否有办法将tweet导出到json、txt或csv文件? 我的代码: 我曾尝试通过函数来实现,但每次都会遇到错误。在txt文件中,它只写第一条tweet和json,通知“它没有被serelized”。 我的错误在哪里?如果您尝试将您的tweet写入JSON文件,JSON.dump将尝试将其转换为JSON格式。这个过程叫做json.dump只支持默认编码器中的一小部分类型,您可以阅读这些类型。由于tweeps用来表示Tweet的类不是这些类

我正在使用tweepy捕获twitter数据,我想知道我是否有办法将tweet导出到json、txt或csv文件? 我的代码:

我曾尝试通过函数来实现,但每次都会遇到错误。在txt文件中,它只写第一条tweet和json,通知“它没有被serelized”。
我的错误在哪里?

如果您尝试将您的
tweet
写入JSON文件,
JSON.dump
将尝试将其转换为JSON格式。这个过程叫做
json.dump
只支持默认编码器中的一小部分类型,您可以阅读这些类型。由于tweeps用来表示Tweet的类不是这些类型的一部分,因此
json
模块引发了您提到的异常

作为一个解决方案,您可以序列化一个包含关于tweet的各种数据的字典,下面是一个示例:

def tweet_to_json(tweet):
    tweet_dict = {
        "text": tweet.text,
        "author_name": tweet.user.screen_name
    }
    with open('tweet.json', 'w+') as f:
        json.dump(tweet_dict, f)
请注意,在JSON文件中使用append模式通常不是一个好主意。您可以使用JSON列表。 也许能帮你

编辑:下面是一个保存JSON列表的示例:

result = []
for tweet in api.user_timeline(id=name, count=tweetCount):
    result.append({
        'text': tweet.text, 
        'author_name': tweet.user.screen_name
    })
with open('tweet.json', 'w+') as f:
    json.dump(result, f)

谢谢你,沃西,唯一的问题是“w+”参数。他仍然只写了一行字。然而,我改为“a+”并得到了一些答案。Volcoyy,你能告诉我如何确定输出是“utf-8”格式的吗?即使在函数encoding='utf-8'中传递,答案仍然是一样的。我认为您在这里将编码误认为是不同的东西。您尝试使用append模式(在
open
中使用
a
标志)向JSON文件添加新数据,但这会弄乱JSON文件的格式,因此我认为
编码
标志不是这里的问题。您可以使用JSON列表,如我链接的答案中所示。我在回答中加了一个例子。
result = []
for tweet in api.user_timeline(id=name, count=tweetCount):
    result.append({
        'text': tweet.text, 
        'author_name': tweet.user.screen_name
    })
with open('tweet.json', 'w+') as f:
    json.dump(result, f)