2 種類の日付/タイムスタンプを含むファイルがあります。まず、次のようにフォーマットされた日付/タイムスタンプがあります。
DATE : Fri, 20 Apr 2012 09:15:17 -0700 (PDT)
次に、次のようにフォーマットされたタイムスタンプがあります。
12:24 PM
これに対処するために、2 つの正規表現パターンを作成しました。
full_pattern = re.compile('\w{3,4}\W\s\w{3}\s\d{4}\s\d\d:\d\d:\d\d')
time_pattern = re.compile(' \d:\d\d\s[\w]{2}')
これらは会話なので、会話の開始日時と、会話の各項目のタイムスタンプを含む出力を探しています。これの最終的なアプリケーションは、日付と時刻が一致するたびに Arduino マイクロコントローラーを使用して何かを作動させることです (つまり、4 月 30 日と午後 1 時 1 分ですか? メッセージはありましたか? はい? わかりました、作動させます)。
2 つの質問があります。
最初のパターン ("full_pattern") は何も返さず、その理由がわかりません。行全体に対処する必要がありますか? (「日付」ビットを含めます)?
これらを一緒に使用するにはどうすればよいですか? したがって、正規表現は最初の日付/タイムスタンプを見つけてからタイムスタンプを出力し、次の日付/タイムスタンプを見つけてからタイムスタンプを出力します。そのようです:
2012 年 4 月 20 日 (金) 11:01:17 11:01 AM 11:03 AM
2012 年 4 月 20 日 (金) 09:15:17 21:15 21:17
注意: 日付/タイムスタンプは軍時で、その他は AM/PM です
私はそれを次のようにパイプしようとしました:
re.findall(pattern1 | pattern2, string)
しかし、それは好きではありませんでした。また、次のように for ループで同時に実行しようとしました。
for line in string:
pattern1 = re.compile('\w{3,4}\W\s\w{3}\s\d{4}\s\d\d:\d\d:\d\d')
pattern2 = re.compile(' \d:\d\d\s[\w]{2}')
re.findall(pattern1, string)
re.findall(pattern2, string)
しかし、その結果、すべてのパターン 2 の無限ループが発生しました (無限ではない可能性があり、間違いなく必要以上の方法です)。
どんな助けでも大歓迎です、ありがとう!