2016-06-21 2 views
1

일반 문장의 긴 문자열 (28MB)이 있습니다. TNT, USA, OMG와 같이 대문자로 된 단어를 모두 제거하고 싶습니다. Sentance와에서 그래서Python - 긴 문자열에서 대문자 단어를 삭제하십시오.

는 :

Jump over TNT in There. 

내가 좀하고 싶습니다

:

Jump over in There. 

어떤 방식으로 어떻게 목록과 itereate에 텍스트를 분할하지 않고 그것을 할 수 있나요? 어떻게 정규 표현식을 사용할 수 있습니까?

+1

왜 문자열을 분할하지 않으시겠습니까? –

+0

@jmetz 내가 아는 해결책이 차선책 (그리고 사소한)이기 때문에 나는 아무 것도 시도하지 않았다. 나는 '재'의 문서를 보았지만, 그것은 나를 위해 복잡하다. 나는 항상 내가 원하는 것을 성취 할 수있는 방법을 찾기 위해 애 쓰고있다. – matousc

+0

@TinoA. 내 경험상, 긴 문자열을 분리하여 반복 할 때're'를 사용하는 것보다 시간이 오래 걸립니다 (하지만 잘못되었을 수도 있습니다). – matousc

답변

2

:

import re 

line = 'Jump over TNT in There NOW' 

m = re.sub(r'\b[A-Z]+\b', '', line) 
#'Jump over in There ' 
1

나는 이런 식으로 뭔가 할 것 :

import string 

def onlyUpper(word): 
    for c in word: 
     if not c.isupper(): 
      return False 
    return True 

s = "Jump over TNT in There." 
for char in string.punctuation: 
    s = s.replace(char, ' ') 

words = s.split() 
good_words = [] 

for w in words: 
    if not onlyUpper(w): 
     good_words.append(w) 

result = "" 
for w in good_words: 
    result = result + w + " " 

print result 
2

사용하여 모듈 re

import re 

line = 'Jump over TNT in There.' 
new_line = re.sub(r'[A-Z]+(?![a-z])', '', line) 

print(new_line) 
# Output 
Jump over in There. 
당신은 단어 경계 \b로 촬영 대문자 [A-Z]의 집합을 사용할 수 있습니다
관련 문제