gpt4 book ai didi

python - 使用 Python 解析北欧格式日期(首先是 DMY,然后是 YMD)的最佳方法

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

我正在寻找一种方法来按优先顺序使用以下“元格式”来解析未知格式的日期:

  1. 日-月-年 (DMY)
  2. 年-月-日 (YMD)
  3. 可能是其他格式(但这并不重要)

这是挪威、丹麦、芬兰和荷兰几乎所有发票上实际使用的元格式,因此它应该是一个常见的用例。然而,似乎没有一个库能够处理它而无需定义大量可能的格式。

具体来说。我需要一个方法 (parse) 来满足以下条件:
parse("01-02-03") == "datetime.datetime(2003, 2, 1, 0, 0)"
parse("2003-02-01") == "datetime.datetime(2003, 2, 1, 0, 0)"

但它也应该适用于其他分隔符等。

关于如何在不定义大量格式列表的情况下实现这一点有什么建议吗?

编辑:由于瑞典有不同的偏好,我更喜欢一个可以概括的答案,以适用于 YMD 优于 DMY 的情况。

最佳答案

您是否尝试过使用 pandas?恕我直言,这是导入日期的最佳和最简洁的方法,因为它在 99% 的时间内开箱即用,而 dateutil 等大多数其他东西往往会失败。

import pandas as pd
pd.to_datetime('01-02-03', dayfirst=True)
pd.to_datetime('2003-02-01', dayfirst=True)

pandas 的另一个优势是它可以处理数组、列表和大多数其他类型,甚至支持使用 datetime-index 对数组(称为 DataFrame)进行字符串索引。

有关如何使用 pandas 获取 datetime.datetime 格式的更多信息:
只需将 .to_pydatetime() 附加到您的解析器即可。

pd.to_datetime('2003-02-01', dayfirst=True).to_pydatetime()
# Out[]: datetime.datetime(2003, 2, 1, 0, 0)

关于python - 使用 Python 解析北欧格式日期(首先是 DMY,然后是 YMD)的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50249371/

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