2015-07-01 4 views
-1

Я пытаюсь подсчитать количество раз в списке, строка имеет более 20 символов.Python 2.7 подсчет числа строк

Я пытаюсь использовать метод подсчета, и это то, что я получаю:

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

редактирования: извините за отступа ошибки перед тем

+2

у вас есть неправильный отступ, а также код. – DhruvPathak

+0

Где вы видели метод '.count', используемый как этот? 'str.count (x)' возвращает количество неперекрывающихся вхождений 'x'. Здесь ваш 'x' является либо« True », либо« False », т.е. даже не str. Вот почему вы получаете это сообщение об ошибке. –

+0

Как насчет использования 'len (filter (lambda x: len (x)> 20, lines))'? – Pant

ответ

3

Think вы имеете в виду это,

>>> 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 
+0

Да, спасибо. – ironrose

+0

Или просто 'cnt = sum (len (i)> 20 для i в s)'? –

+1

@JonClements я первый. –

0

В этом случае

x = len(line) > 20 

х является булево, которые не могут быть "подсчитаны" в строке.

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

В строке необходимо указать строку или аналогичный тип (Юникод и т. Д.).

0

Я рекомендую использовать простой счетчик для вашей цели:

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

здесь, x это логический тип (True или False в Python), потому что 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 
Смежные вопросы