用于解析日期和时间的 5 个有用的 DIY Python 函数

日期和时间不应该破坏您的代码,但它们经常会破坏您的代码。这五个 DIY Python 函数有助于将现实世界的日期和时间转化为干净、可用的数据。

来源:KDnuggets

简介

解析日期和时间是那些看起来很简单的任务之一,直到您真正尝试去做为止。Python 的 datetime 模块可以很好地处理标准格式,但现实世界的数据很混乱。用户输入、抓取的网络数据和遗留系统经常会出现问题。

本文将引导您了解处理常见日期和时间解析任务的五个实用函数。最后,您将了解如何构建灵活的解析器来处理您在项目中看到的混乱的日期格式。

GitHub 上代码的链接

1. 解析相对时间字符串

社交媒体应用程序、聊天应用程序和活动源显示时间戳,例如“5 分钟前”或“2 天前”。当您抓取或处理这些数据时,您需要将这些相对字符串转换回实际的日期时间对象。

这是一个处理常见相对时间表达式的函数:

函数使用正则表达式(regex)从字符串中提取数字和时间单位。模式 (\d+) 捕获一个或多个数字,并且 (秒|分|小时|日|周|月|年) 匹配时间单位。 s? 使复数 's' 可选,因此“hour”和“hours”都可以。

对于 timedelta 直接支持的单位(秒到周),我们创建一个 timedelta 并从参考时间中减去它。对于月份和年份,我们分别近似使用 30 天和 365 天。这并不完美,但对于大多数用例来说已经足够了。

Reference_time 参数允许您指定不同的“现在”以进行测试或处理历史数据。

让我们测试一下:

result1 = parse_relative_time("2 小时前")

result2 = parse_relative_time("3天前")

result3 = parse_relative_time("1周前")

print(f"2 小时前:{result1}")

print(f"3天前: {result2}")print(f"1 周前:{result3}")输出:2小时前: 2026-01-06 12:09:34.5841073 天前: 2026-01-03 14:09:34.5845041 周前:2025-12-30 14:09:34.5845582. 从自然语言文本中提取日期这是一个从自然语言中查找并提取日期的函数:总结