gpt4 book ai didi

python - dateutil 和闰年

转载 作者:行者123 更新时间:2023-12-01 00:36:21 30 4
gpt4 key购买 nike

如果我有以下字符串列表:

a = ['Loc_RaffertytoLong_2004_02_21',
'Loc_RaffertytoLong_2004_02_22',
'Loc_RaffertytoLong_2004_02_23',
'Loc_RaffertytoLong_2004_02_24',
'Loc_RaffertytoLong_2004_02_26',
'Loc_RaffertytoLong_2004_02_27',
'Loc_RaffertytoLong_2004_02_28',
'Loc_RaffertytoLong_2004_02_29']

我尝试使用dateutil解析日期:

from dateutil import parse as dparse
for i in a:
print(dparse.parse(i,fuzzy=True))

我得到打印输出:

2019-02-21 00:00:00
2019-02-22 00:00:00
2019-02-23 00:00:00
2019-02-24 00:00:00
2019-02-26 00:00:00
2019-02-27 00:00:00
2019-02-28 00:00:00

错误:

ValueError: ('Unknown string format:', 'Loc_RaffertytoLong_2004_02_29')

我不知道为什么从 2004 年开始就是闰年。

最佳答案

如果您查看输出,dateutil 会将您的日期解释为 2019 年的日期(这不是闰年)。

我能够通过更改行来使您的代码成功:

print(dparse.parse(i,fuzzy=True))

至:

print(dparse.parse('-'.join(i.split('_')[2:])))

当我运行整个 block 时,我得到输出:

2004-02-21 00:00:00
2004-02-22 00:00:00
2004-02-23 00:00:00
2004-02-24 00:00:00
2004-02-26 00:00:00
2004-02-27 00:00:00
2004-02-28 00:00:00
2004-02-29 00:00:00
<小时/>

有趣的是,如果我们像这样加入下划线:

print(dparse.parse('_'.join(i.split('_')[2:])))

它还将日期解释为 2019 年。这让我认为问题在于 dateutil 如何处理下划线。

<小时/>

您也可以简单地将下划线替换为破折号:

from dateutil import parser
for i in a:
print(parser.parse(i.replace('_','-'), fuzzy=True))

打印与上面相同的输出。

关于python - dateutil 和闰年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57731429/

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