如何在Python中将timedelta字符串转回timedelta对象?
解析timedelta字符串转回timedelta对象的方法
Python标准库的datetime模块并没有提供直接解析timedelta字符串输出的内置方法——毕竟timedelta的字符串表示是一种人性化输出,没有对应的逆解析函数。不过你可以通过手动解析字符串来实现需求,以下是具体方案:
手动解析实现
针对你给出的几种字符串格式(纯时分秒、带单/复数days的格式),可以写一个简单的解析函数:
from datetime import timedelta def parse_timedelta(delta_str): days = 0 # 处理包含天数的情况 if 'day' in delta_str: days_part, time_part = delta_str.split(', ', 1) days = int(days_part.split()[0]) delta_str = time_part # 解析时分秒 h, m, s = map(int, delta_str.split(':')) return timedelta(days=days, hours=h, minutes=m, seconds=s)
测试示例
# 测试不同格式的字符串 print(parse_timedelta("12:21:00")) # 输出: 12:21:00 print(parse_timedelta("1 day, 0:53:00")) # 输出: 1 day, 0:53:00 print(parse_timedelta("2 days, 9:28:00")) # 输出: 2 days, 9:28:00
补充:第三方库方案
如果你能使用第三方库,可以用python-dateutil的parser模块,它能自动识别这类时间差字符串:
from dateutil import parser from datetime import timedelta delta = parser.parse("1 day, 0:53:00") - parser.parse("00:00:00") print(isinstance(delta, timedelta)) # 输出: True
不过要注意python-dateutil不属于标准库,需要先通过pip install python-dateutil安装。
内容的提问来源于stack exchange,提问作者efthimio
相关产品推荐
相关产品推荐

