将输出导出到csv文件?

时间:2018-05-08 23:26:29

标签: python csv twitter export export-to-csv

我有一个代码从其ID获取推文,我想将输出导出到csv文件。 代码如下:

import tweepy
from tweepy import OAuthHandler
import csv 

consumer_key = '???'
consumer_secret = '???'
access_token = '???'
access_secret = '???'


auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

api = tweepy.API(auth)


tweet = api.get_status(/id of tweet/)
print(tweet.text)
print(tweet.id)
print(tweet.created_at)

我尝试了这段代码,我从其他代码中获取它并且它不起作用:

with open('tweet1212.csv', 'w',encoding='utf-8') as csvfile:
        fieldnames = ['info.']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(tweet)

它让我:

TypeError: 'Status' object is not iterable
如果可以,请帮助我。

1 个答案:

答案 0 :(得分:0)

错误告诉你出了什么问题 - 你不能只传递一个状态'反对写作者。

快速浏览一下document会显示writerow需要字典。

有两种方式:

with open('tweet1212.csv', 'w',encoding='utf-8') as csvfile:
    fieldnames = ['info.']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    row = str(tweet.text) + str(tweet.id) + str(tweet.created_at)
    writer.writerow({'info.':row})

或者您可以将字段名称更改为fieldnames=['text', 'id','created_at'],并执行write.writerow({'text':tweet.text, 'id':tweet.id, 'created_at':tweet.created_at})

之类的操作

这样,您每次打开文件时都会写一行,所以我怀疑您要添加a而不是写w

with open('tweet1212.csv', 'a',encoding='utf-8') as csvfile:

让我知道它是否有效/你需要更多的帮助!

P.S。我强烈建议使用pandas而不是csv来创建csv文件 - 操作数据框要容易得多!

<强> EDIT1

假设您通过运行此功能获得新推文:

tweet = api.get_status(/id of tweet/)

然后您可以通过以下内容构建推文列表:

allTweets=[];
allIDs=[1234, 1235, 1236] # a lits of id of tweets that you want to get

with open('tweet1212.csv', 'a',encoding='utf-8') as csvfile:
    fieldnames = ['info.']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for ID in allIDs:
        tweet = api.get_status(/id of tweet/)
        row = str(tweet.text) + str(tweet.id) + str(tweet.created_at)
        writer.writerow({'info.':row})

让我知道它是否有效!