如果我知道字符串表示日期時間信息的格式,那麼我可以很容易地使用datetime.datetime.strptime(s, fmt)
。但是,如果事先不知道字符串的格式,是否可以確定給定的字符串是否包含可以使用正確的格式字符串解析爲日期時間對象的內容?確定一個字符串可能是一個日期時間對象
顯然,生成每個可能的格式字符串以進行徹底搜索並不是一個可行的想法。我也不想編寫一個函數,其中有許多格式化字符串被硬編碼到它中。
有沒有人有任何想法如何可以完成(也許某種正則表達式?)?
如果我知道字符串表示日期時間信息的格式,那麼我可以很容易地使用datetime.datetime.strptime(s, fmt)
。但是,如果事先不知道字符串的格式,是否可以確定給定的字符串是否包含可以使用正確的格式字符串解析爲日期時間對象的內容?確定一個字符串可能是一個日期時間對象
顯然,生成每個可能的格式字符串以進行徹底搜索並不是一個可行的想法。我也不想編寫一個函數,其中有許多格式化字符串被硬編碼到它中。
有沒有人有任何想法如何可以完成(也許某種正則表達式?)?
什麼fuzzyparsers:
採樣輸入:
jan 12, 2003
jan 5
2004-3-5
+34 -- 34 days in the future (relative to todays date)
-4 -- 4 days in the past (relative to todays date)
用法示例:
>>> from fuzzyparsers import parse_date
>>> parse_date('jun 17 2010') # my youngest son's birthday
datetime.date(2010, 6, 17)
安裝有:
$ pip install fuzzyparsers
詹姆斯之子的第五個生日快樂! – inspectorG4dget
哈哈!爲什麼謝謝:) –
注意:James Mills的'fuzzyparsers'回答可以處理一些不能的輸入,比如'+ 34'或'-4',因此在更可控的系統中可能更有用安裝fuzzyparsers),但是,如果你在ideone上運行,那麼dateutil就在那裏,但是fuzzyparsers不是。 –
的日期和時間解析是一個複雜的問題,由於多種格式和順序中使用的。如果你有很多不同的格式你有很多問題。如果01-02-2015是在一月或二月,你甚至不能使用。沒有自動化系統可以處理這個。因此,您將不得不在源代碼上解決日期格式問題,並使用您的可分析一致性數據。 –