count列表python中的字符数

时间:2016-11-16 00:48:40

标签: python

我是初学者正在寻求帮助。我正在尝试编写一个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文件转换为列表后,我很丢失。有人可以帮我解决这个问题吗?

2 个答案:

答案 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个字符。