2017-12-15 10 views
0

각 Outlook 이메일에서 특정 데이터를 구문 분석하는 스크립트를 작성하고 있습니다.공백과 새 줄을 제거하는 가장 우아한 방법은 무엇입니까?

나는 구문 분석하기 전에 내 문자열에서 모든 캐리지 리턴, 새 공백 및 공백을 제거하기 위해 뭔가를 작성했지만 아주 추악합니다. 더 우아하게 만들기위한 아이디어?

messageStr = messageStr.replace("\r","") 
messageStr = messageStr.split('\n') 
messageStr = [i for i in messageStr if i != ''] 
messageStr = [i for i in messageStr if i != ' '] 
+0

* 모든 공백을 제거 하시겠습니까? 아니면 앞과 뒤의 공백을? 전체 메시지 또는 줄 단위로이 작업을 수행하려고합니까? – sytech

+1

가능한 [Python에서 여러 문자열 대체를 효율적으로 수행] (https://stackoverflow.com/questions/3367809/efficiently-carry-out-multiple-string-replacements-in-python) – chrisz

답변

1

.strip 문자열의 방법은 앞뒤 공백을 제거합니다. 당신이 공백을 후행/선도하는 각 라인 및 기타에 캐리지 리턴을 제거하고 싶다면 당신이 모든 공백을 제거하려면이

lines = [line.strip() for line in message.split('\n')] 

을 할 수있는, 단지 선도하지/뒤, 당신은 뭔가를 할 수 필터링하려는 공백이 모두 포함 된 문자열과 비슷합니다. 모듈에는이를위한 도우미가 있습니다. 다음은 문자열 s에서 모든 공백을 제거 할 다음이 작업은 작업을 청소 데이터 관련이

import string 
filtered_string = ''.join(char for char in s if char not in string.whitespace) 
1

, 여기 내 접근 방식 :

목록에있는 모든 문자를 넣어 어떤 기호이면 다음 바로 확인 목록에서 삭제하십시오.

dummy_string='Hello this is \n example \r to remove '' the special symbols ' '' 
special_sym=['\r','\n','',' '] 


[dummy_string.split().__delitem__(j) for j,i in enumerate(dummy_string.split()) if i in special_sym] 

print(" ".join(dummy_string.split())) 

출력 :

Hello this is example to remove the special symbols 

P.S : 당신이 split()을 수행 할 때 자동으로 사람들을 제거하지만 여전히 내가 거기에 그냥 예를 들어 보여 주었다 때문에 special_sym 목록에서 '\r', '\n' 필요하지 않습니다.