我试图计算一个字符串超过20个字符的列表中的次数。
我正在尝试使用count方法,这就是我不断得到的:
>>> for line in lines:
x = len(line) > 20
print line.count(x)
编辑:对不起之前的缩进错误
答案 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中的True
或False
),因为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