Python 智能日期解析(不指定年份)

2024-01-10

如何解析没有年份的日期(使用 dateutil),以便当当前日期为 17/11/2012 时,这些日期将被解析如下:

print parser.parse("23 nov", dayfirst=True, yearfirst=False, fuzzy=True)
# 23/11/2012
print parser.parse("28 dec", dayfirst=True, yearfirst=False, fuzzy=True)
# 28/12/2012
print parser.parse("3 jan", dayfirst=True, yearfirst=False, fuzzy=True)
# 3/01/2013

我想要的是已经过去的几个月将出现在今年的下一年中。有什么简单的解决方案吗?


要自动查找未来日期:

from dateutil import parser
from dateutil.relativedelta import relativedelta

def parse_future(timestr, default, **parse_kwargs):
    """Same as dateutil.parser.parse() but only returns future dates."""
    now = default
    for _ in range(401):  # assume gregorian calendar repeats every 400 year
        try:
            dt = parser.parse(timestr, default=default, **parse_kwargs)
        except ValueError:
            pass
        else:
            if dt > now: # found future date
                break
        default += relativedelta(years=+1)
    else: # future date not found
        raise ValueError('failed to find future date for %r' % (timestr,))
    return dt

Example

from datetime import datetime

for timestr in ["23 nov", "28 dec", "3 jan", "29 feb"]:
    print parse_future(timestr, default=datetime(2012, 11, 17)).date()

Output

2012-11-23
2012-12-28
2013-01-03
2016-02-29

注:“2月29日”翻译为“2016-02-29”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 智能日期解析(不指定年份) 的相关文章

  • 将 Poetry 与 PyEnv 一起使用并遇到 Python 版本问题

    我正在使用 WSL2 Ubuntu 我一直在学习使用 Fastapi 进行后端 API 开发的课程 我相信我的 Ubuntu 默认 python 是 3 8 我正在尝试使用 python 3 10 0 进行开发 我做了以下事情 pyenv安
  • 在Python中不断寻找用户输入

    我将如何编写一个始终寻找用户输入的 Python 程序 我想我希望有一个等于输入的变量 然后根据该变量的等于值会发生不同的情况 因此 如果变量是 w 那么它将执行某个命令并继续执行 直到收到另一个输入 例如 d 然后会发生不同的情况 但直到
  • 如何将 Google Cloud Storage 中的许多文件设为私有?

    我进行了很多研究 但无法为此提出解决方案 以下是我用来在 GCP 中公开所有文件的代码 def make blob public bucket name blob name Makes a blob publicly accessible
  • 如何使用 .pth 文件添加 Python 导入路径

    如果我将 pth 文件放入 site packages 中 则会给出一个ImportError 我不知道如何通过创建 pth 文件来导入 指在Python中导入 https stackoverflow com questions 69728
  • 测试交互式Python程序

    我想知道python的哪些测试工具支持交互式程序的测试 例如 我有一个由以下人员启动的应用程序 python dummy program py gt gt Hi whats your name Joseph 我想要仪器Joseph所以我可以
  • 如何生成大型网站的图形站点地图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想为我的网站生成图形站点地图 据我所知 有两个阶段 抓取网站并分析链接关系 提取树形结构 生成视觉上
  • 如何使用 python http.server 运行 CGI“hello world”

    我使用的是 Windows 7 和 Python 3 4 3 我想在浏览器中运行这个简单的 helloworld py 文件 print Content Type text html print print print print h2 H
  • Scrapy Splash,如何处理onclick?

    我正在尝试抓取以下内容 我能够收到响应 但我不知道如何访问以下项目的内部数据以抓取它 我注意到访问这些项目实际上是由 JavaScript 和分页处理的 这种情况我该怎么办 下面是我的代码 import scrapy from scrapy
  • Django 说“id 可能不为 NULL”,但为什么会这样呢?

    我今天要疯了 我只是尝试插入一条新记录 但它返回了 post blogpost id 可能不为 NULL 错误 这是我的模型 class BlogPost models Model title models CharField max le
  • 监控培训课程如何运作?

    我试图理解使用之间的区别tf Session and tf train MonitoredTrainingSession 以及我可能更喜欢其中之一 似乎当我使用后者时 我可以避免许多 杂务 例如初始化变量 启动队列运行程序或设置文件编写器以
  • 如何解决CDK CLI版本不匹配的问题

    我收到以下错误 此 CDK CLI 与您的应用程序使用的 CDK 库不兼容 请将CLI升级到最新版本 云程序集架构版本不匹配 支持的最大架构版本为 8 0 0 但发现为 9 0 0 发出后cdk diff命令 我确实跑了npm instal
  • Scapy:如何将新层(802.1q)插入现有数据包?

    我有一个数据包转储 想要将 VLAN 标记 802 1q 标头 注入到数据包中 怎么做 为了找到答案 我查看了Scapy 插入新层和记录问题 https stackoverflow com q 17259592 1381638 这确实很有帮
  • Python:绘制甘特图的模块

    有没有一个好的Python绘图模块甘特图 http en wikipedia org wiki Gantt chart 我试过了开罗情节 http linil wordpress com 2008 09 16 cairoplot 11 但它
  • Python 中使用 globals() 的原因?

    Python 中有 globals 函数的原因是什么 它只返回全局变量的字典 这些变量已经是全局的 所以它们可以在任何地方使用 我只是出于好奇而问 试图学习Python def F global x x 1 def G print glob
  • 如何在python中访问矩阵每个元素的相邻单元格?

    这里 如果两个单元共享边界 则它们被认为是相邻的 例如 A 5 6 4 2 1 3 7 9 8 这里 索引 0 0 的相邻元素位于索引 0 1 和 1 0 处 索引 1 1 的相邻元素位于索引 0 1 1 0 2 1 处 和 1 2 假设你
  • Django:显示管理员验证错误的自定义错误消息

    我正在使用 Django 1 2 4 我有一个模型 其中有一个需要验证的字段 当验证失败时 我想向用户显示自定义错误消息 模型编辑是在管理界面中完成的 这就是我目前正在做的事情 def clean fields self exclude N
  • 列表中的“u”是什么意思?

    这是我第一次遇到这种情况 刚刚打印了一个列表 每个元素似乎都有一个u在它前面 即 u hello u hi u hey 它是什么意思 为什么列表的每个元素前面都会有这个 由于我不知道这种情况有多常见 如果您想了解我是如何遇到它的 我会很乐意
  • python:xml.etree.ElementTree,删除“命名空间”

    我喜欢 ElementTree 解析 xml 的方式 特别是 Xpath 功能 我有一个带有嵌套标签的应用程序的 xml 输出 我想按名称访问此标签而不指定名称空间 这可能吗 例如 root findall molpro job 代替 ro
  • Django 按小时过滤

    我找到了那个链接 http code djangoproject com attachment ticket 8424 time filters diff http code djangoproject com attachment tic
  • 如何通过 Selenium 内部的文本查找按钮(Python)?

    我有以下三个按钮 我不知道如何获取其中的文本 例如异常值 我试过browser find element by link text Outliers click 但出现 无法找到元素 错误 我该怎么做 See find element by

随机推荐

  • 我无法修复的 Pygame2Exe 错误

    我做了一个 游戏 我喜欢玩它 我想将它分发给我的朋友 而无需在他们的计算机上安装 Python 和 Pygame 我对 Py2Exe 和 Pyinstaller 做了很多研究 我查看了许多教程 修复 错误 但似乎没有一个对我有帮助 Pyin
  • XPath仅在直接子节点中选择一种类型的节点

    也许有人可以帮助我找到问题的解决方案 我需要在下面的 xml 中执行 XPath 查询 仅提取作为直接子节点的 Field 节点 在下面的示例中 查询应提取字段 E1F1 E1F2 和 E1F3 到目前为止我正在运行查询 Field 但我得
  • python套接字在逐行调试时工作正常,但在完整运行时无法工作[重复]

    这个问题在这里已经有答案了 我正在开发一个项目 该项目涉及传输文件 并为文件的每个块进行 CRC 校验和计算 例如此处为 40960 字节 我的问题是 当我逐行调试代码时 一切正常 但当我完全运行代码时 我在接收器端得到不同的 CRC 校验
  • React Material-UI 中“makeStyles”的内部实现?

    这个问题的目的是了解幕后发生的事情 每次我找到代码时makeStyles 我觉得我只是在做纯粹的复制粘贴 而不了解幕后发生的事情 所以我想在这里发布一个问题 以便有人可以帮助我 我在许多 React 应用程序中看到过以下代码 我很好奇 想知
  • 无法使用 Egit 和 Bitbucket 进行推送

    我一直在尝试使用 EGit 和 Bitbucket 启动一个项目 但无法将项目推送到服务器中的存储库 这些是我遵循的步骤 我会尝试非常具体 以便其他人可以将其用作教程模式 即使它对我不起作用 但可能对其他人有用 1 我在 Ubuntu 12
  • 仅用 CSS 可以扩展文本区域吗?

    我有一个高度为 200 像素的文本区域 但是当我通过文本传递 200 像素时 我希望扩展文本区域 而不是使用滚动条保留 200 像素的高度 只用CSS就可以做到这一点吗 代替textarea 您可以使用div with 内容可编辑 http
  • 这个弹出窗口类的名称是什么?

    我找不到这个类的名称 popover 苹果在他们的应用程序中大量使用它 我已经寻找过popover NSAlert 自定义隐藏 可见视图等等 这叫什么 This is UIAlertController 在ios 7之前它被称为UIActi
  • winforms 应用程序中托管的 MSIE WebBrowser 控件以兼容模式运行

    我以 winforms 形式托管 MSIE 不幸的是 无论我是否给它一个在独立 IE 中以 IE8 模式运行的页面 它都坚持以兼容模式运行 其结果是 一些在独立 MSIE 中正确呈现的内容在托管控件中完全错位和混乱 除了文档类型等之外 是否
  • 通过 URL cakePHP 传递多个、单个或无参数

    所以我有以下控制器函数来添加事件 public function add id null year null month null day null service id null project id null 在某些情况下 我需要做的是
  • pyenv-virtualenv:pyenv 中未安装“3.6.4”

    这让我很困惑 我不知道这意味着什么 我的计算机 MacOS 上安装了 3 6 4 但它不想工作 我想不出任何解决办法 也不知道该怎么办 无论你是在 Mac 还是 Linux 上 答案都略有不同 我不习惯在 Windows 上运行 Pytho
  • linux 区域设置未设置

    我有一台基于 ARM 的机器 上面装有 ubuntu 发行版 它经常在运行各种命令时向我提供以下信息 Please check that your locale settings LANGUAGE unset LC ALL unset LA
  • C#计算阶乘

    我有这段代码 它从用户那里获取输入并计算其阶乘和小于输入数字的阶乘 但我一直只获取第一个数字的阶乘 其余为 0 它应该是这样的 例如 如果输入为 5 5 120 4 24 3 6 2 4 1 1 如何让循环遍历输入数字下面的所有数字 usi
  • PrimeNg 数据表不刷新

    使用 Angular v2 4 8 和 PrimeNg v1 1 4 我有一个包含两个组件的页面 Dropzone 用于上传文件 p datatable 显示上传的文件 我将 Dropzone 配置为一次发送 5 个文件 当完成 5 个文件
  • 为什么我的 mysql DISTINCT 不起作用?

    为什么下面的两个查询返回重复的 member id 而不是第三个 我需要第二个查询来处理不同的 每当我运行GROUP BY 这个查询非常慢 并且结果集没有返回与 unique 相同的值 该值是错误的 SELECT member id id
  • 子进程可以在其父进程不死亡的情况下进入吗?

    Kill 它会立即终止进程吗 https stackoverflow com questions 8468866 kill does it kill the process right away 我找到了答案 并设置了一个信号处理程序SIG
  • 尝试打印我的矩阵而不是堆地址

    代码似乎可以运行 除了我得到的不是指定 由用户 大小的矩阵 而是我认为是堆地址 以下是当用户输入 2 作为尺寸 然后输入 4 个数字时返回的结果 输入矩阵大小 2 逐行输入 2 x 2 矩阵 2 3 4 5 行排序矩阵是 D 3c95454
  • jQuery 颜色选择器 z 轴问题

    我正在用这个选色器 http www eyecon ro colorpicker about 这真是太棒了 但是 我想在 jQuery 对话框中使用它 在表单内的输入标记上 但问题是当颜色选择器出现时 它部分位于对话框后面 在 z 轴上 因
  • GCP Cloud Run:禁用默认 URL 并仅使用自定义域?

    是否可以像这样禁用默认 URLhttps my app 332mpca uc a run app并且仅使用域映射中定义的自定义域 您无法使用自定义域来实现这一点 您可以通过在 Cloud Run 前面添加负载均衡器来实现类似的目标 这要归功
  • Node.js SFTP 客户端 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想通过 node js 应用程序访问 sftp 服务器 你知道有这个图书馆吗 或者你知道我如何实现这
  • Python 智能日期解析(不指定年份)

    如何解析没有年份的日期 使用 dateutil 以便当当前日期为 17 11 2012 时 这些日期将被解析如下 print parser parse 23 nov dayfirst True yearfirst False fuzzy T