我是初学者正在寻求帮助。我正在尝试编写一个python程序,它将从.txt文件返回一个列表。显示具有不同字符长度的单词数。例如,"在列表a中有五个单词,其中包含三个或更少的字符。"
这是我到目前为止所做的:
def count_lengths(text):
up_to_three = 0
four_or_five = 0
six_to_nine = 0
ten_or_more = 0
newtext = text.split(' ')
def main():
filename = "gb.txt"
text = readfile(filename)
word_lengths = count_lengths(text)
print(word_lengths)
将.txt文件转换为列表后,我很丢失。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
可能最简单的方法是使用Counter:
unrecognized single argument: arg1
答案 1 :(得分:0)
使用collections.Counter
将产生一个类似dict
的对象,其中键为字长,值为每个长度的字数。
>>> s = 'hello this is a sentence with words of varying lengths'
首先,跟踪所有字长:
>>> lengths = [len(word) for word in s.split()]
>>> lengths
[5, 4, 2, 1, 8, 4, 5, 2, 7, 7]
然后,计算不同长度的字符串中出现的字数:
>>> from collections import Counter
>>> word_lengths = Counter(lengths)
>>> word_lengths
Counter({2: 2, 4: 2, 5: 2, 7: 2, 1: 1, 8: 1})
编辑:由于您需要累积总和,请尝试以下方法:
def count_lengths(text, n):
lengths = [len(word) for word in text.split()]
word_lengths = Counter(lengths)
# count the total number of words with lengths less than or equal to n
n_and_less_chars = sum(value for key, value in word_lengths.items() if key <= n)
return n_and_less_chars
尝试一下:
>>> print(count_lengths(s, 5))
7
如果我们查看上面的示例字符串,我们可以看到实际上有7个单词,不超过5个字符。