gpt4 book ai didi

python - 如何转换为日期时间

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:24 25 4
gpt4 key购买 nike

我有 CSV 文件,其中包含日期,看起来像:

2014-01-25 00:14:08.000

现在我解析 CSV 文件并获取日期。然后我运行一个正则表达式来检查日期是否有效(与上面的格式匹配)然后我将日期从 CSV 文件转换为 DateTime。

这怎么给了我一个 ValueError: 声明:需要超过 3 个值来解包。CSV 文件可以包含数以千计的记录,这些记录的日期与上述类似。

我的正则表达式:

date_re_time_norm = re.compile("""^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[ ](\d\d:\d\d:\d\d.\d\d\d)$""", re.I)

我的转换方法:

def convert_date(self, dstring):
if self.date_re_time_norm.match(dstring):
year, month, day, hour, minute, second = str(dstring).split('-')
return datetime(int(year), int(month), int(day), int(hour), int(minute), int(second), 0, 0, 0, 0, 0, 0)

为了便于阅读,缩短了方法。

我做错了什么吗?

最佳答案

datetime.strptime会好很多:

from datetime import datetime

d = datetime.strptime("2014-01-25 00:14:08.000", "%Y-%m-%d %H:%M:%S.%f")

这可以替换您的两个正则表达式,因为如果格式合适,它将解析日期,否则会引发错误:

def convert_date(self, dstring, format="%Y-%m-%d %H:%M:%S.%f"):
try:
return datetime.strptime(dstring, format)
except ValueError:
# wrong format

(您可以根据需要将格式字符串设为类或实例属性)。


编辑:如果您决心坚持使用正则表达式,则需要进行更多拆分:

date, time = dstring.split(" ")
year, month, day = date.split("-")
hour, minute, second = time.split(":")
second = second.split(".")[0]
return datetime(*map(int, (year, month, day, hour, minute, second)))

然而,在 Python 中,"There should be one-- and preferably only one --obvious way to do it"那就是 strptime

关于python - 如何转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com