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

Python实现:判断库存元素是否匹配含可变数字的模板

解决方案

这里提供两种实用的实现方式,直接解决你的匹配需求:

方法一:正则替换匹配模板

先把库存项里括号内的数字替换成{},再检查是否存在于模板列表中:

import re

templates = ["Hat({})A", "Tie({})B", "Disk({})C"]
inventory = ["Hat(1)A", "Hat(43)A", "Shirt(23)E", "Tie(2)B"]

# 定义正则:匹配括号内的数字部分
num_pattern = re.compile(r'\(\d+\)')

result = []
for item in inventory:
    # 把括号内数字替换成{},得到模板格式的字符串
    normalized = num_pattern.sub('({})', item)
    # 检查是否在模板列表里
    result.append(normalized in templates)

print(result)  # 输出: [True, True, False, True]

方法二:预编译正则模板匹配

把模板转换成正则表达式(将{}替换成匹配任意数字的\d+),然后用正则匹配库存项:

import re

templates = ["Hat({})A", "Tie({})B", "Disk({})C"]
inventory = ["Hat(1)A", "Hat(43)A", "Shirt(23)E", "Tie(2)B"]

# 把模板转换成正则表达式列表
regex_templates = [re.compile(tmpl.replace('{}', r'\d+')) for tmpl in templates]

result = []
for item in inventory:
    # 检查是否匹配任意一个正则模板
    match = any(pattern.fullmatch(item) for pattern in regex_templates)
    result.append(match)

print(result)  # 输出: [True, True, False, True]

说明

  • 方法一适合模板较少、库存项结构简单的场景,逻辑直观易理解。
  • 方法二适合需要频繁匹配的场景,预编译正则后匹配效率更高,还能避免字符串替换可能带来的边界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:15:49