2016-10-23 6 views
0

길이가 < 인 모든 단어를 필터링해야하는 간단한 함수를 사용하므로 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 그러나 빈 배열을 제공합니다. 내가 어디로 잘못 됐는지 생각해?

+2

'[t는 tkens.split (' ') if len (t)> 3]'입니까? 그렇지 않으면 문자로 문자열을 반복합니다. – Psidom

+0

또 다른 방법은'filter' 함수를 사용하는 것입니다.이 함수는 특별히 질문에 "필터"라는 단어를 사용하기 때문에 좋습니다. 'return list (filter (lambda x : len (x)> 3, tokens.split()))'를 호출합니다. –

답변

4

문자열 인 "토큰"을 시퀀스로 처리하므로 각 문자를 반복합니다. 문자열 메서드 split()은 공백 문자 (단어)에서 문자열을 분리합니다. 따라서 시도하십시오 :

tokens = [t for t in tokens.split() if len(t) > 3] 
관련 문제