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

如何拆分包含名称与时间的组合字符串,提取名称和日期信息?

解决字符串拆分:提取名称和日期部分

嘿,我来帮你搞定这个字符串拆分的问题!你之前用split("-")的方法行不通,是因为日期本身包含横杠,拆分后会把日期的一部分也混进名称里,完全偏离了预期。下面给你两个靠谱的解决思路:

方法一:按下划线拆分后定位日期

你的目标字符串结构很清晰:名称部分由多个下划线连接的字段组成,后面跟着日期(格式是MM-DD-YYYY)和时间部分。我们可以先把整个字符串按下划线_拆分,再找到日期所在的片段,最后把前面的片段拼接回名称:

full_str = "cDOT_storage01_esx_infra02_07-19-2021_04.45.00.0478"
# 按下划线拆分所有片段
parts = full_str.split("_")
# 找到符合日期格式的片段(包含横杠且长度为10)
date_index = next(i for i, part in enumerate(parts) if "-" in part and len(part) == 10)
# 拼接前面的片段得到名称
name_part = "_".join(parts[:date_index])
# 直接提取日期片段
date_part = parts[date_index]

print(name_part)  # 输出: cDOT_storage01_esx_infra02
print(date_part)  # 输出: 07-19-2021

方法二:用正则表达式精准匹配

如果你的字符串格式是固定的(名称 + _ + 日期 + _ + 时间),正则表达式会更高效,直接捕获你需要的两个部分:

import re

full_str = "cDOT_storage01_esx_infra02_07-19-2021_04.45.00.0478"
# 正则规则:匹配任意字符直到遇到_+日期格式+_,捕获名称和日期
pattern = r"(.*)_(\d{2}-\d{2}-\d{4})_"
match_result = re.match(pattern, full_str)

if match_result:
    name_part = match_result.group(1)
    date_part = match_result.group(2)
    print(name_part)  # 输出: cDOT_storage01_esx_infra02
    print(date_part)  # 输出: 07-19-2021

为什么之前的方法失效?

你用j['name'].split("-")[0]得到的是cDOT_storage01_esx_infra02_07,因为第一个横杠出现在日期的07-19之间,拆分后会把日期的前两位也包含在结果里,这显然不是你要的名称部分。所以不能用横杠作为拆分依据,得换成本身不在名称里出现的分隔逻辑~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:27:50