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

如何用Python从文件名提取日期时间并拆分至date、time列?

解决文件名日期时间提取问题

问题根源

你的脚本存在两个核心问题:

  • 错误地将re.split返回的列表转为字符串,导致传入strptime的是整个列表的字符串表示,而非目标日期时间片段
  • 使用的格式串%Y-%m-%d-%H-%M-%S与文件名中200605202252的格式(无分隔符的%Y%m%d%H%M%S)不匹配

正确实现脚本

下面是可以实现需求的代码,包含两种常见处理方式:

方式1:字符串分割提取(适合固定格式文件名)

from datetime import datetime
import pandas as pd

file_name = "CCN-200 data 200605202252.csv"
# 按空格分割取最后一段,再移除.csv后缀
dt_str = file_name.split()[-1].replace(".csv", "")
# 解析无分隔符的日期时间字符串
dt = datetime.strptime(dt_str, "%Y%m%d%H%M%S")
# 格式化为目标样式
target_date = dt.strftime("%Y-%m-%d")
target_time = dt.strftime("%H:%M:%S")

# 存入DataFrame
df = pd.DataFrame()
df['date'] = [target_date]
df['time'] = [target_time]

print(df)

方式2:正则表达式匹配(适合格式多变的文件名)

from datetime import datetime
import pandas as pd
import re

file_name = "CCN-200 data 200605202252.csv"
# 匹配文件名中的12位数字日期时间片段
match = re.search(r'(\d{12})', file_name)
if match:
    dt_str = match.group(1)
    dt = datetime.strptime(dt_str, "%Y%m%d%H%M%S")
    target_date = dt.strftime("%Y-%m-%d")
    target_time = dt.strftime("%H:%M:%S")
    
    df = pd.DataFrame()
    df['date'] = [target_date]
    df['time'] = [target_time]
    
    print(df)
else:
    print("未找到有效日期时间片段")

输出结果

运行代码后会生成符合要求的DataFrame:

date      time
0  2006-05-20  22:52:00

注:你的期望输出中日期2020-06-05与文件名中的20060520不符,上述代码基于文件名实际内容生成结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:42:06