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

Python中如何用多种随机混合的分隔符分割字符串?

用Python提取混杂分隔符下的日期、型号、品牌、年份信息

针对这类分隔符混乱(空格、逗号、冒号混用)且字段长度不固定的字符串,最可靠的处理方式是用正则表达式匹配字段的固定模式,不用纠结分隔符的具体类型。

先明确字段规律

以示例字符串"Mar 17 1997 H569, CAT: 2022"为例,核心结构是:

  • 日期:开头的「3字母月份缩写 + 数字日期 + 4位年份」组合
  • 型号:日期后的一串标识(可能带末尾逗号)
  • 品牌:冒号前的名称
  • 年份:冒号后的4位数字

实现代码

直接用正则匹配整体结构,提取对应字段:

import re

# 获取用户输入
user_input = input("请输入包含信息的字符串:")

# 定义正则,适配多种分隔符情况
pattern = r"^(\w{3} \d{1,2} \d{4}) ([^,:]+)[,:]?\s*(\w+)\s*:\s*(\d{4})$"
match_result = re.match(pattern, user_input)

if match_result:
    date = match_result.group(1)
    model = match_result.group(2).strip()  # 去除可能的首尾空格
    make = match_result.group(3)
    year = match_result.group(4)
    # 按要求格式输出
    print(f"date: {date}")
    print(f"model: {model}")
    print(f"make: {make}")
    print(f"year: {year}")
else:
    print("输入格式不符合要求,请检查后重试。")

正则规则解释

  • ^(\w{3} \d{1,2} \d{4}):匹配开头的日期,捕获为第1组(支持1-2位的日期数字)
  • ([^,:]+):匹配型号,捕获为第2组,允许型号包含除逗号、冒号外的任意字符(比如连字符、点)
  • [,:]?\s*:忽略型号末尾可能带的逗号/冒号,以及后续的任意空格
  • (\w+)\s*:\s*:匹配品牌,捕获为第3组,忽略品牌与冒号之间的空格
  • (\d{4})$:匹配末尾的4位年份,捕获为第4组

常见场景适配

如果型号是带特殊字符的格式(比如X-789、A.B123),上述正则也能正常提取;如果日期的数字日期是单个数字(比如Mar 5 1997),同样可以匹配。

内容的提问来源于stack exchange,提问作者Star Ali World

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:05:29