現在、Mailman txt アーカイブ ファイルを解析しようとしています。これらのファイルには、リストを介して送信されたすべての電子メールが 1 つのファイルに連結されています。構造は次のようになります。
From SOMETHING
From: SOMETHING
Date: SOMETHING
Subject: SOMETHING
In-Reply-To: SOMETHING
Message-ID: <SOMETHING>
CONTENT
From SOMETHING
From: SOMETHING
Date: SOMETHING
Subject: SOMETHING
In-Reply-To: SOMETHING
Message-ID: SOMETHING
CONTENT
[...]
問題は、CONTENT
改行が含まれる可能性があることです。そのため、単純にアーカイブをメッセージに分割してから、各メッセージを解析することはできません。
これを解析しようとしたのは次のとおりです。
def parseContent(content):
import re
pattern = r"From (.*)\n"+\
"From: (.*)\n"+\
"Date: (.*)\n"+\
"Subject: (.*)\n"+\
"In-Reply-To: (.*)\n"+\
"Message-ID: (.*)\n"+\
"(.*)"
matches = re.findall(pattern, content)
for from1, from2, date, subject, inreply, messageid, body in matches:
print from1
print body
print "#"*20
return matches
ただしbody
、メッセージの本文は含まれませんが、改行は 1 つだけです。最後の一致グループをすべて一致させるにはどうすればよいのですが、上記の部分が一致するとすぐに、body 一致グループは一致しないはずです。