Уменьшение количества слов в строке

#python

#python

Вопрос:

Я использую простую функцию, которая должна фильтровать все слова длиной < 3. Поэтому я написал следующую функцию.

 def my_tokenizer(tokens):
 tokens = [t for t in tokens if len(t) > 3]
 return tokens

x = my_tokenizer("sdfgds hj")
print x
  

Однако X выдает мой пустой массив. Есть мысли о том, где я ошибаюсь?

Комментарии:

1. [t for t in tokens.split(' ') if len(t) > 3] ? В противном случае вы перебираете строку символ за символом.

2. Альтернативный метод заключается в использовании filter функции (которую я предлагаю только потому, что вы специально используете слово «фильтр» в своем вопросе), например return list(filter(lambda x: len(x) > 3, tokens.split())) .

Ответ №1:

Вы обрабатываете «токены», строку, как последовательность, поэтому она будет проходить по каждому символу. Строковый метод split() разделит строку на пробельные символы (words). Так что попробуйте:

 tokens = [t for t in tokens.split() if len(t) > 3]