2017-03-23 11 views
-5

중괄호 제거를 원합니다.문자열 목록의 단어로 분할

약 15,000 개의 문자열로 구성된 목록이 있습니다. 그 문자열은 작은 텍스트입니다.

h = [] 
for w in clean.split(): 
    if w not in cachedStopWords: 
     h.append(w) 
    if w in cachedStopWords: 
     h.append(" ") 
print(h) 

내가하지 모든 전체 문자열이 중지 단어의 목록과 비교 될 수 있도록 .split()이 필요하다고 이해 : 내 코드는 다음과 같다. 그러나 목록을 분리 할 수 ​​없기 때문에 작동하지 않는 것 같습니다. (어떤 종류의 분할도없이, 분명히 일치하는 것이 없기 때문에, h = clean이됩니다.)

다른 케이스를 보존하면서 목록에서 다른 문자열을 분리 할 수있는 방법을 알고있는 사람이 있습니까?

+3

이 예제와 일치하는 예제 및 예상 결과를 제공하십시오. – sphere

답변

0

아주 최소한의 예 : 그 전에 한 줄보다

strings_cleaned = [] 
for s in strings: 
    word_list = [] 
    for word in s.split(): 
     if word not in stops: 
      word_list.append(word) 
    s_string = ' '.join(word_list) 
    strings_cleaned.append(s_string) 

이 많이 이보다이다 (나는 생각한다), 그러나 아마 더 직관적 :

stops = {'remove', 'these', 'words'} 

strings = ['please do not remove these words', 'removal is not cool', 'please please these are the bees\' knees', 'there are no stopwords here'] 

strings_cleaned = [' '.join(word for word in s.split() if word not in stops) for s in strings] 

또는 당신은 할 수 있습니다.

당신이 set (조회 O(n)입니다 조회 O(1) 대신 list들, 만드는 해쉬 컨테이너)에 불용어의 컨테이너를 변환하고 있는지 확인합니다.

편집 : 이것은 스팸 어거를 제거하는 방법에 대한 일반적이며 매우 간단한 예입니다. 유스 케이스는 약간 다를 수 있지만 데이터 샘플을 제공하지 않았기 때문에 더 이상 지원할 수 없습니다.

+0

완벽하게 잘 작동했습니다. 실제로 두 번째 버전은 더 자연스러운 것처럼 보입니다! 많이 도와 줬어! 고맙습니다. – Jaerli

+0

이 대답이 당신을 위해 일한 것처럼 들립니다. 초록색 체크 표시를 승인하도록 표시하십시오. – blacksite