如何使用包含文本文件的文件夹返回词典?

2024-09-27 07:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想返回一个以文本文件名为键的字典。然后,我有一个数据框,它有三列不同的单词。我想返回文本文件中显示的列中每个单词的计数作为值。例如,我做了import os,并使用方法os.listdir() 来显示我的文本文件列表

myinput: 
import pandas as pd
import re
import os
txtlist = os.listdir("./data")
print(txtlist)

myoutput: 
['textone.txt', 'texttwo.txt', 'textthree.txt']

接下来,我定义了我要从excel文件中查找的单词的数据框架

myinput: 
wrdlist = pd.read_excel("words.xlsx")
wrdlist

myoutput: 
       Color       Shape       Description
0      red         square        happy
1      green       circle         sad
2     yellow      triangle        mad
3    navy blue      cube        disgust

我已经使用dataframe创建了一个可以用于颜色的列表

myinput:
colorwrds = []
for word in wrdlist.Color:
     colorwrds.append(re.compile(r"\b"+word+r"\b"))

最后,我想使用所有这些返回字典,该字典将文件作为键,颜色计数作为值。因此,textone.txt文件中有两个单词,一个是海军蓝,一个是红色,两个是黄色,一个是绿色,一个是海军蓝,一个是红色,三个是红色

Desiredoutput:
{'textone.txt' : 3, 'texttwo.txt' : 5, 'textthree.txt':1}

我试图创建一个这样的函数,但我不确定我是否做得对

attemptedinput to achieve desired output:

def counterfunction(textfilelist, importantwordslist):
     mydict = {}
     for wordname in importantwordslist.lower():
          mydict[wordname] = 0
     for wordname in textfilelist.lower():
          if wordname in mydict.keys():
               mydict[wordname] += 1
     return mydict

print(counterfunction(txtlist, wrdlist)

Tags: 文件inimporttxtfor字典os单词
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:41

您可以从如下数据帧获取字数:

import pandas as pd
from collections import Counter

df = pd.DataFrame({'Color': {0: 'red', 1: 'green', 2: 'yellow', 3: 'navy_blue'},
 'Shape': {0: 'square', 1: 'circle', 2: 'triangle', 3: 'cube'},
 'Description': {0: 'happy', 1: 'sad', 2: 'mad', 3: 'disgust'}})

colors = ['red', 'green', 'yellow']


color_count = sum([n for c, n in Counter(df.to_numpy().flatten()).items() if c in colors])

print(color_count)
#3

因此,如果没有任何样本数据,它可能会如下所示:

import os
root = r'D:\Test'
filenames = [r'textone.txt', r'texttwo.txt', r'textthree.txt']
colors = ['red', 'green', 'yellow']

dict_results = dict()
for file in filenames:
    path = os.path.join(root, filenames)
    df = pd.read_csv(path)
    color_count = sum([n for c, n in Counter(df.to_numpy().flatten()).items() if c in colors])
    dict_results[file] = color_count = sum([n for c, n in Counter(df.to_numpy().flatten()).items() if c in colors])

相关问题 更多 >

    热门问题