如何编写嵌套循环并避免它覆盖数据?



我不明白

你好,我正在尝试从多个用户那里获取最近的推文。在那里,我创建了一个嵌套循环,但我的问题是,它覆盖了"berlintweets"。因此,循环工作,但它应该添加数据,而不是覆盖它。

真的非常感谢任何帮助或建议。我是一个完全的初学者,他很自豪他能走到这一步。但现在我很难过,不知道我能做什么/改变什么了。

提前感谢大家!

import tweepy
import config
import pandas as pd
client = tweepy.Client(bearer_token=config.BEARER_TOKEN)
Liste_Namen = pd.read_csv('Namen.csv', delimiter=',')
tweet_id_list = [""]
tweet_text_list = [""]
tweet_created_list = [""]
berlintweet = [""]
for user_name in Liste_Namen['ids']:
berlintweet = tweepy.Paginator(client.get_users_tweets, id=user_name, exclude= ["replies", "retweets"], tweet_fields=["created_at"], max_results=100).flatten(limit=200)
for tweet in berlintweet:
tweet_id_list.append(tweet.id)
tweet_text_list.append(tweet)
tweet_created_list.append(tweet.created_at)
df = pd.DataFrame({
'name': config.USER_ID,
'tweet_id': tweet_id_list,
'tweet_text': tweet_text_list,
'tweet_created': tweet_created_list,
})
df.to_csv('BerlinTest2.csv', sep=',', index=False, encoding='utf-8-sig')

应该可以添加到berlintweet,就像您添加到其他列表一样,例如tweet_id_list:

page = tweepy.Paginator(
client.get_users_tweets, 
id=user_name, 
exclude=["replies", "retweets"], 
tweet_fields=["created_at"], 
max_results=100)    
berlintweet.append(page.flatten(limit=200))

有关更多信息,以下内容可能对您有用:https://docs.python.org/3/library/stdtypes.html mutable-sequence-types

它并没有立即变得明显,我什么flatten()返回,但名称暗示我,这是一个列表(https://docs.tweepy.org/en/latest/v2_pagination.html)。但是,您也可以将生成器传递给append()。它应该就地修改被调用的列表

同样,您用字符串初始化tweet_id_list,然后尝试访问每个元素的.id,这将不起作用。字符串没有.id。同样的问题也适用于berlintweet = [""]。你想用berlintweet = []来初始化它。这要么是复制粘贴错误,要么是您仍然不清楚如何用空列表初始化变量。空列表是[],而[""]表示仅以空字符串作为元素的列表。实际上,它可能适用于所有四个列表,因为我怀疑没有很好的理由在那里有一个空字符串,除非它是这部分代码外部的一些需求。

当您将tweet文本附加到tweet_text_list时,您可能想要写tweet.text。我相信文档是这么说的,但是我现在没有能力测试代码,因为我没有Twitter帐户。

对于这个答案的其他读者,tweet可用字段的文档在这里:

https://developer.twitter.com/en/docs/twitter-api/fields

https://docs.tweepy.org/en/latest/v2_models.html推

相关内容

  • 没有找到相关文章

最新更新