Python - 多个文件夹的平均字数

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

我有一个文件夹,里面有子文件夹,里面有文本文件,组织结构如下。

corpus - french - negative - [text files]
corpus - french - positive - [text files]
corpus - german - negative - [text files]
corpus - german - positive - [text files]

这是我目前写的代码。

import glob

files_list = glob.glob("corpus/*/*/*")

for path in files_list:
    elems = re.split("\\\\", path)
    corpus, ln, classe, nom = elems
    file = open(path, mode="r", encoding="utf", errors="ignore")
    read_file = file.read()
    words = read_file.split()
average = sum(len(word) for word in words) / len(words)
print(ln, classe, average)

我的目标是创建一个代码,给出所有文本文件的平均字数 按语言和类别(正负)排列。所以我希望结果是这样的。

french negative 34.2
french positive 23.4
german negative 9.3
german positive 8.23

这是我从打印函数中得到的结果: german positive 9.416666666666666

这些文件只是保存在1.txt, 2.txt等名称下的推文。

python character average
1个回答
0
投票

所以我问了我的教授,并实施了他的建议,得到了这段代码,它可以计算每个文件夹中的单词(tokens)总数,并按照我想要的方式组织结果。

import glob

files_list = glob.glob("corpus/*/*/*")

dic = {}

for path in files_list:
    elems = re.split("\\\\", path)
    corpus, ln, classe, nom = elems
    file = open(path, mode="r", encoding="utf", errors="ignore")
    read_file = file.read()

    words = read_file.split(' ')

    #print(ln, classe, nom, len(words))

    dic.setdefault(ln, {})
    dic[ln].setdefault(classe, 0)

    dic[ln][classe]+=len(words)

    file.close()

print(dic)

这段代码的打印结果是:{'french': {'negative': 4982, 'positive': 1807}, 'german': {'negative': 25140, 'positive': 6817}}

因为我知道每个文件夹里有多少个文件 我只是用手做了平均数 这不是最自动的方法 但至少完成了任务。

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