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 智能日期解析(不指定年份) 的相关文章

  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 我无法修复的 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