2017-11-13 18 views
0

私は、Pythonを使用して電子メールメッセージの本文内のテキストのみをフィルタリングしようとしています。 メールの「必要なコンテンツ」の部分を取得する必要があります。 はここでメールを受信したときに私が手の文字列です:私はそのような何かをしようとしたが失敗している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)。何が一貫しているのか、一貫していないのか正確には分からないので、私はそれらの2つの部分が一貫していると仮定しています( ' - \ S +'と 'Content-Type:')。 '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) 

しかし、Pythonのre.findallは読みやすいコードを作る個別に各ラインを、治療するフラグを持っています

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

先読みアサーション(?=)を使用できます。

>>> import re 
>>> body='--001a1144b8cc8e9a67055ddfb9ec\nContent-Type: text/plain; charset="UTF-8' 
>>> re.findall(".+(?=\nContent-Type)",body)         ['--001a1144b8cc8e9a67055ddfb9ec'] 
関連する問題