2017-11-13 5 views
0

파이썬을 사용하여 전자 메일 메시지 본문의 텍스트 만 필터링하려고합니다. 메일의 "필요한 콘텐츠"부분을 가져와야합니다. 내가 그런 일을 시도했지만 실패했다Python을 사용하여 전자 메일 본문의 문자열 필터링

'--001a1144b8cc8e9a67055ddfb9ec 
Content-Type: text/plain; charset="UTF-8" 

Needed Content 

--001a1144b8cc8e9a67055ddfb9ec 
Content-Type: text/html; charset="UTF-8" 

<div dir="ltr">Off</div> 

--001a1144b8cc8e9a67055ddfb9ec-- 
' 

: 여기 메일을 수신 할 때 내가 할 문자열의

re.findall(r'/\r/\n(.+?)/\r/\n', body) 

는 줄 바꿈 사이 필터링하려면했지만 실패를 .. 미리 감사합니다 ! 당신이 \r\n을 일치 시키려면

+0

콘텐츠 유형 :. * \ s * ([\ s \ S] *? (? = \ s * \ 1))'캡처 그룹 2] (https://regex101.com/r/qY6Rje/1). 일관성이 있는지, 일관성이 없는지 확실하지 않으므로 두 부분이 일관성이 있다고 가정합니다 ('- \ S +'및'Content-Type :'). 'Needed Content' 만 필요하다고 가정하면 위의 내용을 편집하고'Content-Type :'뒤에'\ s * text/plain;'을 추가 할 수 있습니다. – ctwheels

+0

나를 위해 일하지 않습니다 .. word1 = re.findall (r '^ . * \ s * ([\ s \ S] *? (? = \ s * \ 1)), body) word2 = re.findall (r 'text/plain; charset = \ "UTF-8 \"\ n \ n (. +) \ n \ n \ - \ –

답변

1

, 너무처럼 [\r\n]를 사용

re.findall(r'(?<=[\r\n]).+(?=[\r\n])', body) 

그러나 파이썬 re.findall 읽기 쉽게 코드를 만들어 개별적으로 각 라인을 치료하는 플래그가 :

re.findall(r'^.+$', body, re.MULTILINE) 
0

lookahead 어설 션 (?=)을 사용할 수 있습니다.

>>> import re 
>>> body='--001a1144b8cc8e9a67055ddfb9ec\nContent-Type: text/plain; charset="UTF-8' 
>>> re.findall(".+(?=\nContent-Type)",body)         ['--001a1144b8cc8e9a67055ddfb9ec'] 
관련 문제