csv 如何在python中计数特定符号

bqujaahr  于 2022-12-15  发布在  Python
关注(0)|答案(2)|浏览(127)

你好,我是python的初学者,我正在遍历一个csv文件,试图找出一个特定用户使用这些符号的次数:“@”和“#”,并将其作为字典打印出来。问题是,我认为它将“@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文件格式如下所示:推特用户名,政党,推特文本

gfttwv5a

gfttwv5a1#

语句row[2] == '@'检查tweet是否等于@,您要做的是查看tweet是否包含带有'@' in row[2]的符号。
此外,还有一个错误,您两次都添加到mentionsCounter,而不是第二次添加到hashtagCounter
最后一个一般性的注意,我会在文件的顶部导入csv,而不是在函数中导入,所以导入只在脚本第一次运行时调用,而不是每次调用函数时调用。
以下是前两项更改:

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

字符串
请记住,如果@#在一条推文中出现多次,根据您的代码,它们只会被计数一次。

rqmkfv5c

rqmkfv5c2#

让我为你简化一下

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)

相关问题