问题描述
我试图编写一个程序,该程序首先读取输入文件的名称,然后使用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中的顺序相同