2016-10-23 10 views
0

私は長さが<のすべての単語をフィルタリングする単純な関数を使用しています。したがって、次の関数を記述しました。文字列内の単語数を減らす

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

x = my_tokenizer("sdfgds hj") 
print x 

Xただし、空の配列です。私が間違っているところにはどんな考えがありますか?

+2

'[t] in tkens.split( '')if len(t)> 3]'?それ以外の場合は、文字ごとに文字列をループします。 – Psidom

+0

別の方法として、 'filter'関数を使用する方法があります(これは質問に「filter」という言葉を特に使用するためです)。 'return list(filter(lambda x:len(x)> 3、tokens.split()))'となります。 –

答えて

4

文字列である "トークン"をシーケンスとして扱うので、各文字をループします。文字列メソッドsplit()は、空白文字(単語)の文字列を区切ります。したがって、試してみてください:

tokens = [t for t in tokens.split() if len(t) > 3] 
関連する問題