如何在从.csv文件创建的列表中查找单词出现的频率

问题描述

我试图编写一个程序,该程序首先读取输入文件名称,然后使用csv.reader()方法读取文件。该文件包含用逗号分隔的单词列表。该程序应输出单词及其频率(每个单词出现在文件中的次数),而不重复。

文件 input1.csv 具有 hello,cat,man,he,dog,boy,Hello,man,cat,woman,dog,Cat,hey,boy

到目前为止,我有这个:

import csv
with open('input1.csv','r') as wordsfile:
words_reader = csv.reader(wordsfile)
for row in words_reader:
    for word in row:
        count = row.count(word)
        print(word,count)

但是我的输出是这样的: “你好1 猫2 男人2 嘿2 狗2 男孩2 你好1 男人2 猫2 女人1 狗2 猫1 嘿2 男孩2“

我正在尝试输出内容,但没有任何重复,我很困惑,不胜感激。

解决方法

尝试使用set()

import csv
with open('input1.csv','r') as wordsfile:
words_reader = csv.reader(wordsfile)
for row in words_reader:
    list_of_words = set(row)
    for word in list_of_words:
        count = row.count(word)
        print(word,count)

我对csv库不是很熟悉,并且我不知道row是否是列表,如果这样会引发错误,请不要抱歉。 如果row是字符串,则可以使用

row = row.split()
list_of_words = set(row)

希望有帮助。

,
import csv

input1 = input()

with open(input1,'r') as wordsfile:
    words_reader = csv.reader(wordsfile)
    for row in words_reader:
        list_of_words = row

no_duplicates_in_list = list(dict.fromkeys(list_of_words))
listlength = len(no_duplicates_in_list)

for i in range(listlength):
    print(no_duplicates_in_list[i],list_of_words.count(no_duplicates_in_list[i]))

与Aryman几乎相同,但顺序与csv中的顺序相同

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...