如果我知道字符串表示日期时间信息的格式,那么我可以很容易地使用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是在一月或二月,你甚至不能使用。没有自动化系统可以处理这个。因此,您将不得不在源代码上解决日期格式问题,并使用您的可分析一致性数据。 –