これは私の問題を簡略化したものですが、要点は次のとおりです。特定のパターンを見つけるために正規表現を使用して電子メールを並べ替えるスクリプトがあります。私が並べ替える項目の 1 つは、メールの受信日です。datetime モジュールを使用して、次のように日付文字列をフォーマットします。
s1 = datetime.strptime(regex_obtained_str, '%B %d, %Y, %I:%M:%S %p').strftime('%m/%d/%Y %I:%M:%S %p')
ここで、4 つのメールを解析したとします。これらは正規表現関数の結果です。
s1 = 'March 15, 2013 8:58:34 PM'
s2 = 'March 15, 2013 11:10:10 AM'
s3 = 'March 15, 2013 11:16:06 AM'
s4 = 'April 15, 2013 12:02:04 PM'
strftime のフォーマット後は次のようになります。
s1 = '03/15/2013 08:58:34 PM'
s2 = '03/15/2013 11:10:10 AM'
s3 = '03/15/2013 11:16:06 AM'
s4 = '04/15/2013 12:02:04 PM'
これらすべてをランダムな順序でリストに入れ、次のように sort() 関数を実行すると:
L = [s2, s1, s3, s4]
L.sort()
出力は次のとおりです。
['03/15/2013 08:58:34 PM', '03/15/2013 11:10:10 AM', '03/15/2013 11:16:06 AM', '04/15/2013 12:02:04 PM']
ご覧のとおり、ソート時に「AM」と「PM」は考慮されていません。私はStackOverflowでこれに似た他の質問を数多く見てきましたが、それらはすべて、12時間時計を考慮してstrptime()/stftime()関数で%Hを%Iに変更することを提案していますが、私はすでに行っていますそれ。ソート時に %p を考慮する方法を誰か提案できますか? ありがとう!