2016-10-19 5 views
-2

pythonでnltkライブラリを使用して電子メールから "from:"、 "to:"、 "cc:"をフィルタリングまたは削除しようとしています。 これを実行する方法はありますか? PS:私は電子メールスレッドからの、からの削除

をPYTHONに新しいです。ここメール

こんにちはのスレッドがある、

いくつかのテキスト

おかげで、

名前と詳細

名と詳細

投稿者:XXX //ここで私はこの分野送信

を読みたくない:YYY:2016年3月24日(木曜日)11時20分AMは、//ここで私は、このフィールド

を読みたくありませんいくつかのテキスト

こんにちは、

いくつかのテキスト

ありがとう:.COM //ここで私は、このフィールドに

件名を読みたくありません!

名前と詳細

から:ここではいくつかの名前//私は

が送信され、このフィールドを読みたくない:2016年3月4日(金曜日)午前2時40分PM //ここで私はしないでくださいこのフィールド

を読みたい:yyy.com //ここで私は、このフィールドに

件名読みたくない:いくつかのテキスト

ねえが、

のPythonでいくつかのテキスト


+0

「Excelファイルにある電子メールダンプ」がどのように構築されるのか想像もつきません。個々のメッセージから電子メールヘッダーを削除するのは簡単ですが、データ表現が見えない場合は、あまりにも曖昧です。広すぎると投票に投票する。 – tripleee

+0

いいえExcelファイルの列にある電子メールを読み込もうとしていて、「from:」、「to:」などのようなものを除外しなければなりません。 – user3125261

+0

あなたの作品を見せてください。これまでに何を試しましたか? – Soviut

答えて

1

3.5+これは非常に簡単です。

from email import message_from_file # or message_from_bytes if you want that 

with open(filename) as fh: 
    msg = message_from_file(fh) 
del msg['from'], msg['to'], msg['cc'] 
back_to_bytes = msg.as_bytes() 

これは、ヘッダー行が存在しないかのように単純にザッピングします。具体的にはFrom:ヘッダーを削除するのは問題がありますが、実際に電子メールメッセージを処理するものに結果メッセージを戻さなければ問題にはなりません。

電子メールに関するNLTKに固有のことは何もありません.NLTKで身体部分を処理しようとする前に、電子メールに関する詳細を理解する必要があります。具体的には、multipart/alternativeメッセージパーツがどのように動作するのかを理解する必要があります。どちらか一方を選択して、何らかのフォーマットフィルタ(HTMLパーツが利用可能な場合はHTMLパーツを選択すると、多くのメーラーは最近、text/plainという部分を提供しています。この部分は、リンクの最後に実際のコンテンツがHTMLで表示されているWeb URLをクリックするだけです)。

+0

3.4より前には、やや鋭い' email'ライブラリがありました。これは、3.6+のドキュメントの「従来のAPI」として文書化されています。このドキュメントは3.6でのみ更新されましたが、最新のAPIは以前のリリースですでに利用可能でした。 – tripleee

関連する問題