日期和闰年

2024-10-03 13:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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年是闰年。你知道吗


Tags: 字符串infromimporttrue列表forparse
1条回答
网友
1楼 · 发布于 2024-10-03 13:17:23

如果你看看你的产出,dateutil将你的日期解释为2019年的日期(这不是闰年)。你知道吗

我可以通过更改行使您的代码成功:

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

收件人:

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

当我运行整个程序块时,我得到了输出:

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))

打印与上述相同的输出。你知道吗

相关问题 更多 >