为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

心有法竹 2023-10-11 20:01:18
我正在尝试编写一个程序,首先读取输入文件的名称,然后使用 csv.reader() 方法读取该文件。该文件包含以逗号分隔的单词列表。程序应该输出单词及其频率(每个单词在文件中出现的次数),没有任何重复项。文件input1.csv有hello,cat,man,hey,dog,boy,Hello,man,cat,woman,dog,Cat,hey,boy到目前为止我有这个:import csvwith 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”我正在尝试输出此内容,但没有任何重复项,我很困惑,任何帮助将不胜感激。
查看完整描述

5 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超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 中的相同


查看完整回答
反对 回复 2023-10-11
?
精慕HU

TA贡献1845条经验 获得超8个赞

尝试使用 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)

希望能帮助到你。


查看完整回答
反对 回复 2023-10-11
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

好吧,我对 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)


查看完整回答
反对 回复 2023-10-11
?
动漫人物

TA贡献1815条经验 获得超10个赞

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]))


查看完整回答
反对 回复 2023-10-11
?
慕斯王

TA贡献1864条经验 获得超2个赞

导入 csv 单词 = {} user_file = input() with open(user_file, "r") as csvfile: inputreader = csv.reader(csvfile) for row in inputreader: listofwords = row


    for i in row:

        if i in words:

            words[i] += 1

        else:

             words[i] = 1

对于单词中的 i: print(i, Words[i])


查看完整回答
反对 回复 2023-10-11
  • 5 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信