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

问题描述 投票:0回答:6

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

文件 input1.csvhello,cat,man,hey,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 英寸

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

python list csv word-frequency
6个回答
3
投票
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 中的相同


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)

希望有帮助。


1
投票

好吧,我对 Python 很基础,但我在尝试不同的 for 循环等大约一个小时的时间里就弄清楚了这一点。我最终坚持使用列表,因为这就是说明中分配的内容。为了消除第一个列表中的重复项,我创建了第二个列表并嵌套了一个 if 语句,该语句仅添加未包含在其中的单词,从而生成一个新列表,其中包含第一个列表中每个单词的一个副本。


filename = input()
words = []
new_words = []
with open(filename, 'r') as csvfile:
    reader = csv.reader(csvfile, delimiter = ',')
    for row in reader:
        for word in row:
            words.append(word)
        for word in words:
            freq = words.count(word)
            if word not in new_words:
                new_words.append(word)
                print(word, freq)
         


0
投票
import csv

name = input()
with open(name, 'r') as myfile:
    Reader = csv.reader(myfile, delimiter=',')
    dictionary = dict()
    for l in Reader:
        for m in l:
            if m in dictionary:
                dictionary[m] = dictionary[m] + 1
            else:
                dictionary[m] = 1
    for n in list(dictionary.keys()):
        print("{} {}".format(n, dictionary[n]))

0
投票

这个有效 10/10

导入csv

输入文件=输入(“”)

字数= {}

以 open(input_file, 'r') 作为文件: csv_reader = csv.reader(文件) 对于 csv_reader 中的行: 对于行中的单词: word = word.strip() # 删除前导/尾随空格 如果单词不在 word_count 中: 字数[字] = 1 别的: 字数[字] += 1

对于单词,在 word_count.items() 中进行计数: print(f"{单词} - {计数}")


-1
投票

导入csv 字数 = {} 用户文件 = 输入() 将 open(user_file, "r") 作为 csvfile: 输入读取器 = csv.reader(csvfile) 对于输入读取器中的行: 单词列表 = 行

    for i in row:
        if i in words:
            words[i] += 1
        else:
             words[i] = 1

对于我来说: 打印(我,字[我])

© www.soinside.com 2019 - 2024. All rights reserved.