Python 2.7计算字符串数

Python 2.7计算字符串数,python,count,Python,Count,我试图计算一个字符串超过20个字符的次数 我正在尝试使用计数方法,这是我一直得到的: >>> for line in lines: x = len(line) > 20 print line.count(x) 编辑:很抱歉之前的缩进错误我想你是这个意思 >>> s = ['sdgsdgdsgjhsdgjgsdjsdgjsd', 'ads', 'dashkahdkdahkadhaddaad'] >>> c

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

我正在尝试使用计数方法,这是我一直得到的:

>>> for line in lines:
        x = len(line) > 20
        print line.count(x)
编辑:很抱歉之前的缩进错误我想你是这个意思

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


>>> cnt
2

在这种情况下,

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
>'a'。计数(假)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:应为字符缓冲区对象

实际上,您需要有一个字符串或类似类型(Unicode等)才能在行中计数。

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

count = 0
for line in lines:
    if len(line) > 20:
        count += 1
print count
这里,
x
是一个布尔类型(
True
False
,在Python中),因为
len(line)>20
是一个逻辑表达式

您可以通过调试来解决问题:

>>> for line in lines:
...     x = len(line) > 20
...     print x
此外,
x=len(line)>20
不是条件表达式。如果表达式:

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

您的缩进和代码都不正确。您在哪里见过这样使用的
.count
方法
str.count(x)
返回
x
的非重叠出现次数。这里您的
x
要么是
True
要么是
False
即,甚至不是str。这就是为什么您会收到错误消息。使用
len(过滤器(lambda x:len(x)>20行))怎么样?
?我的印象是计数方法计算了重叠出现的次数。谢谢你指出这不是一条路。或者只是
cnt=sum(len(i)>20代表s中的i)
?@JonClements我是第一个。
>>> for line in lines:
...     x = len(line) > 20
>>> for line in lines:
...     x = len(line) > 20
...     print x
>>> count = 0
>>> for line in lines:    
...     if len(line) > 20:
...         count += 1    
... 
>>> print count