Python 2.7计算字符串数

时间:2015-07-01 05:57:28

标签: python count

我试图计算一个字符串超过20个字符的列表中的次数。

我正在尝试使用count方法,这就是我不断得到的:

>>> for line in lines:
        x = len(line) > 20
        print line.count(x)

编辑:对不起之前的缩进错误

4 个答案:

答案 0 :(得分:3)

认为你的意思是,

>>> s = ['sdgsdgdsgjhsdgjgsdjsdgjsd', 'ads', 'dashkahdkdahkadhaddaad']
>>> cnt = 0
>>> for i in s:
        if len(i) > 20:
            cnt += 1


>>> cnt
2

>>> sum(1 if len(i) > 20 else 0 for i in s)
2

>>> sum(len(i) > 20 for i in s)
2

答案 1 :(得分:0)

在这种情况下,

x = len(line) > 20

x是一个布尔值,不能在字符串中“计数”。

>>> 'a'.count(False)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected a character buffer object

你需要在行中计算一个字符串或类似的类型(Unicode等)。

答案 2 :(得分:0)

我建议您使用一个简单的计数器:

count = 0
for line in lines:
    if len(line) > 20:
        count += 1
print count

答案 3 :(得分:0)

>>> for line in lines:
...     x = len(line) > 20

这里,x是一个布尔类型(Python中的TrueFalse),因为len(line) > 20是一个逻辑表达式。

您可以通过调试找出问题:

>>> for line in lines:
...     x = len(line) > 20
...     print x

此外,x = len(line) > 20不是条件表达式。您需要使用if表达式:

>>> count = 0
>>> for line in lines:    
...     if len(line) > 20:
...         count += 1    
... 
>>> print count