python for循环只返回最后一个值

elcex8rz  于 2022-12-17  发布在  Python
关注(0)|答案(2)|浏览(209)

我是python新手,我正在做一个获取tweet的项目。我能够做到这一点,现在我想从所有这些tweet中获取hashtag。但是当我尝试执行for循环以附加我的列表时,它只捕获了最后一项/值。我已经遍访了google,甚至尝试了chatGPT,但我似乎不能得到正确的结果。
这里是我的代码,如果有人是善良的,请看看我错过了什么。

keyword = str(input("Enter hashtag"))
date = str(input("Enter date: YYYY-MM-DD"))

tweets = tweepy.Cursor(api.search_tweets, q=keyword, since_id=date, lang='en', tweet_mode = "extended",).items(30) # this is correct

#created columns for Dataframe
columns = ['Date & Time', 'User', 'Retweet_no' ,'Text', 'Location'] 
data_la= [] 

#Created for loop to append data_la 
for tweet in tweets:
  data_la.append([tweet.created_at, tweet.user.screen_name, tweet.retweet_count, tweet.full_text, tweet.geo])
print(tweet.full_text)  
## trying to get hashtags of tweets fetched. 
#Get the tweet text
  tweet_text = tweet.full_text
#Use a regex to find all hashtags in the tweet text
  hashtags = re.findall(r"#(\w+)", tweet_text)
  print('items:', hashtags)
  # Use the entities attribute to get the hashtags

hashtag_list = []
for word in tweets:
     if word == '#':
       hashtag_list.append(word)
print('List:', hashtag_list)

我在谷歌上到处寻找答案,但没有用。我已经被这个问题困扰了一个多星期了。

5cnsuln7

5cnsuln71#

正如RedzMakersError所说,您只检查单词是否为#,并且只检查#
您应该尝试以下操作:

if word.startswith('#'):
   hashtag_list.append(word)

正如函数名所示,如果字符串以#开头,则返回True,否则返回False
正式文件:https://docs.python.org/3/library/stdtypes.html#str.startswith

rks48beu

rks48beu2#

我觉得你的问题在于这句台词:

if word == '#':

你检查这个词是否只有一个“#”
你可能只是想检查单词是否以一个hashtag字符开头(就像hashtag一样),你可以用startswith()函数来检查字符串是否以给定字符开头,如果是,就返回true
因此,在您的情况下,您的代码可能应该如下所示:

if word.startswith("#"):
    hashtag_list.append(word)

在这里,您可以了解更多关于startswith()的信息:https://www.w3schools.com/python/ref_string_startswith.asp
希望这有帮助:)

相关问题