我有一个大文件,日期为%m%d%Y格式,即2013年12月12日的12012013。
我必须执行两件事:
1)验证日期
2)按照按时间顺序排列的格式将其存储在列表中
用于验证:
try:
parsedDate = datetime.strptime(date, '%m%d%Y')
return parsedDate
except:
return None'
使用DateTime需要花费大量时间来解析日期。由于格式是mmddyyyy,我可以在不使用datetime的情况下验证它吗?
2)按时间顺序:我不想将它转换为datetime然后对它进行排序,有没有办法可以使用字符串对它进行排序。我已经检查了很多答案,但几乎所有答案都假定你有一个列表然后对其进行排序。
我想以排序格式插入它吗?
答案 0 :(得分:0)
datetime模块非常好,如果您想要任何其他选项可以验证为reg表达式,请检查:match dates using python regular expressions。
要对日期进行排序而不转换为datetime。只需将其转换为格式yyyymmdd,然后进行字符串排序或只创建一个空列表,然后根据值大或小将字符串附加到正确的位置。
请求您自己尝试:)
答案 1 :(得分:0)
如果格式为%m%d%Y
,则效率最高的是使用RegEx(有一些关于此的分析)。
例如:
import re
import datetime
match_date = re.compile(r'(\d{2})(\d{2})(\d{4})$').match
text = '12012013'
mo = match_date(text)
if mo:
date = datetime.date(int(mo.group(3)), int(mo.group(1)), int(mo.group(2)))
print(date)
# -> 2013-12-01
这样,RegEx将执行第一级过滤,date
构造函数执行第二级(有例外)。当然,您可以改进您的RegEx,这对于演示来说是微不足道的。
如果您事先知道您的日期有效,则可以避免转换为date
并使用tuple
(年,月,日)进行排序,而不是使用{{1} }。