2

文字列から日付を解析しようとしています。この文字列は、事前にわからないさまざまな形式を保持できます。

from datetime import datetime

try:
    return datetime.strptime(text, '%m/%d/%Y'))
except:
    try:
        return datetime.strptime(text, '%m/%d/%y')) 
    except:
        try:
            return datetime.strptime(text, '%Y/%m/%d'))
        except:
            try:
                return datetime.strptime(text, '%b%d/%Y'))
            except:
                return None

明らかに、これは冗長に見えます。マップを使用するより良い方法があると確信していますが、あなたの意見を聞きたいです.車輪の再発明は嫌いです.

4

3 に答える 3

6
from datetime import datetime

def getdate(text):
    formats = ('%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y')
    for format in formats:
        try:
            return datetime.strptime(text, format)
        except:
            pass
于 2013-09-26T13:36:41.383 に答える
4

提供されたフォーマットの優先順位をループするのはどうですか?

from datetime import datetime

def convert(text):
    for format in [ '%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y' ]:
        try:
            return datetime.strptime(text, format)
        except:
            continue
    return None
于 2013-09-26T13:35:32.543 に答える
3

Just use datetutil.parser.parse as described in answers to this question

于 2013-09-26T13:42:33.087 に答える