2012-03-19 12 views
-4

私は複数の電子メールでいっぱいの基本的なテキストファイルを持っています。タイムスタンプ(MM/DD/YYYY HH:MM:SS)とそれに続くチーム名(各ブロックごとに常に同じ場所にある)を取得し、 YYYY-MM-DDに変更されました。私は文字列を削除するための基本的なインとアウトを知っていますが、私は正確に彼らが何であるか分からないので、複数の日付とチーム名をファイルから取得する方法がわかりません(したがって、 。テキストファイルから複数のタイムスタンプとユーザー名を引き出す

To: [email protected] 
From: [email protected] 
Date: MM/DD/YYYY HH:MM:SS 
Subject: Welcome to the IQA! 

Hi, and welcome to the IQA, TEAMNAME, blah blah blah 

To: [email protected] 
From: [email protected] 
Date: MM/DD/YYYY HH:MM:SS 
Subject: Welcome to the IQA! 

Hi, and welcome to the IQA, TEAMNAME, blah blah blah 

そして、これは〜100通の電子メールを何度も繰り返されます。

はここで電子メールがどのように見えるかです。これを書くためのより簡単な言葉があるなら、私に教えてください!

+0

どこから始めたらいいかわからないので、残念ながら何も試していません。私がMM/DD/YYYYの形式で何かを探す方法を知っていたら、おそらくもう少し得られるかもしれません。 – dmcrider

+2

@TechNewbieあなたの最初のリゾート*としてあなたの問題を解決するように私たちに依頼するのではなく、参考に相談するか、グーグルで始めてみることを考えましたか? – Marcin

+0

私が必要とするのは、始める場所です。私が探している答えはそこにあると確信しています、私はそれを見つけるように見えません。 MM/DD/YYYYの形式でファイル全体を検索できたら、元の質問のほとんどを達成することができました。私が明らかに良いものを見つけることができなかったので、あなたが私に指摘できるリソース。 – dmcrider

答えて

1

すべてのメールがTo:で始まると仮定して、それらを分割してタームを検索するだけです。

import re # use regular expressions 

f = open("myEmails.txt") 
mails = f.read() 
f.close() 

mails = mails.split("To:") 
result = [] 

まあ、今各メールは、私たちのリストmails内の文字列です。のは、正規表現について露骨に無知とすると、あなたはあなたが救うことができるタプルのリストになってしまいます

for mail in mails: 
    # Let's use a regular expression that matches your date. 
    # \d stands for any numeric character. 
    date = re.findall("\d\d/\d\d/\d\d\d\d", mail)[0] 
    # Use regular expression, or datetime object, or 
    # just daft string concatenation to get new date: 
    # the string[begin:end] syntax will give you a substring of string 
    new_date = date[6:]+"-"+date[3:5]+"-"+date[:2] 
    # We'll just find the first occurance of "IQA, " and assume 
    # the teamname will follow after. 
    teamname_start = mail.find('IQA, ')+5 
    teamname = mail[teamname_start:mail.find(',', teamname_start)] 
    result.append((new_date, teamname)) 

ことを前提としています

f = open("output.txt", 'w') 
for date, team in result: 
    f.write("%s: team %s joined" %(date, team)) 
f.close() 
0

あなたは正規表現を経由して、それを取得する必要があります。

ここでは、あなたが探していたstarting pointです。

関連する問題