统计文件中的单词长度

2 投票
6 回答
9120 浏览
提问于 2025-04-16 11:13

我想写一个函数,它可以打开一个文件,计算每个单词的长度,并给出结果。例如,

many('sample.txt')

长度为1的单词: 2

长度为2的单词: 6

长度为3的单词: 7

长度为4的单词: 6

我的sample.txt文件内容是: 这是一个测试文件。 有多少个单词的长度是1? 有多少个单词的长度是3? 我们应该找出答案! 一个函数能做到这一点吗?

我到现在为止的代码是,

def many(fname): infile = open(fname,'r')
text = infile.read()
infile.close()
L = text.split()
L.sort
for item in L:
    if item == 1:
        print('Words of length 1:', L.count(item))

有人能告诉我我哪里出错了吗?我调用这个函数时什么也没发生。显然是我的代码有问题,但我不知道该怎么做。任何帮助都很好,谢谢。

6 个回答

1

你在这里期待看到什么

if item == 1:

还有这里呢

L.count(item)

那么实际上发生了什么呢?你可以用调试工具查看变量的值,或者直接把它们打印到屏幕上看看。

3

你想要获取一个列表,里面包含不同长度的字符(比如1个字符、2个字符、3个字符、4个字符等等),以及这些长度的单词在文件中出现的次数。

在你使用 L = text.split() 之前,这个方法是不错的。现在可以看看Python中的字典,它可以帮助你存储上面提到的数据结构,并且可以遍历文件中的单词列表。给你一个小提示……

3

因为这是作业,我在这里简单给出一个解决方案,留给你们去思考它是怎么回事以及为什么有效 :)

>>> from collections import Counter
>>> text = open("sample.txt").read()
>>> counts = Counter([len(word.strip('?!,.')) for word in text.split()])
>>> counts[3]
7

撰写回答