如何计数python中的特定符号



你好,我是python初学者,我正在遍历csv文件,试图找出特定用户使用符号的次数:"@"one_answers"#";然后作为字典打印出来。问题是,我认为它计算的是"@yomomma"作为一个非因素,因为符号不是从单词中分离出来的,但我也不确定。

def getUserTweetDetails(tweetFile,twitterUsername):
import csv 

myFile = open(tweetFile,"r") # opening file in read

csvReader = csv.reader(myFile,delimiter=",") # splitting for ','

next(csvReader) # skipping header

userDetails = {}

mentionsCounter = 0
hashtagCounter = 0

for row in csvReader:
if (row[0] == twitterUsername):
if (row[2] == '@'):
mentionsCounter += 1
if (row[2] == '#'):
mentionsCounter += 1
userDetails["mentions"] = mentionsCounter
userDetails["hashtags"] = hashtagCounter

print(userDetails)

这返回

getUserTweetDetails("Tweets-2020 (2).csv",'ChrisMurphyCT')
**{'mentions': 0, 'hashtags': 0}**

csv文件格式如下:twitterUsername,politicalParty,tweetText

您的语句row[2] == '@'检查tweet是否等于@。你要做的是看看推文是否包含'@' in row[2]符号。

也有一个bug,你添加到mentionsCounter两次而不是hashtagCounter的第二次。

最后一个一般注意事项,我会在文件的顶部导入csv,而不是在函数中导入,所以只有在脚本第一次运行时才调用导入,而不是每次调用函数。

下面是前两个修改:

if '@' in row[2]:
mentionsCounter += 1
if '#' in row[2]:
hashtagCounter += 1 # changed from mentionsCounter to hashtagCounter

请记住,如果@#在tweet中出现多次,根据您的代码,它们只会被计数器一次。

让我来简化一下;

import csv
converted_csv = csv.DictReader(open('tweets.csv'))
for row in converted_csv:
hastags = row['tweetText'].count('#')
mentions = row['tweetText'].count('@')
print(hastags, mentions)

相关内容

  • 没有找到相关文章

最新更新