统计文件中的单词长度
我想写一个函数,它可以打开一个文件,计算每个单词的长度,并给出结果。例如,
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