You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python re.findall匹配结果拆分到日期与时间变量中?

解决方法

你的问题出在re.findall的返回结构上:因为正则里写了6个捕获组,所以它会把这6个捕获到的内容打包成一个元组,再放到列表里返回。而你的文本里只有一处datetime.datetime(...),所以列表里只有这一个元组。

要拆分日期和时间,按下面的步骤来:

  1. 取出元组:从返回的列表里拿到唯一的元组元素
  2. 切片拆分:元组的前3个元素是日期,后3个是时间,用切片直接拆分

完整代码示例

import re

txt = "created_at': datetime.datetime(2023, 1, 17, 11, 38, 26, tzinfo"
# 优化正则:用\d+匹配数字,比.+?更精准
x = re.findall(r"datetime\.datetime\((\d+), (\d+), (\d+), (\d+), (\d+), (\d+), tzinfo", txt)

if x:  # 先确保匹配到结果
    # 取出列表里的唯一元组
    all_parts = x[0]
    # 拆分日期和时间
    date_parts = all_parts[:3]
    time_parts = all_parts[3:]
    
    # 可选:转成整数元组,方便后续处理
    date = tuple(map(int, date_parts))
    time = tuple(map(int, time_parts))
    
    print("日期:", date)  # 输出 (2023, 1, 17)
    print("时间:", time)  # 输出 (11, 38, 26)

补充说明

你之前用x[0:4]得到整个元组,是因为x是列表,x[0:4]取的是列表的前4个元素,但列表里只有1个元素,所以返回的还是包含那个元组的列表。要操作元组里的元素,必须先通过x[0]拿到元组本身,再对元组做切片。

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:55:22