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

Python如何调整字符串切片逻辑适配Sku、Id两种起始子串的内容提取需求

Python双标记字符串截取适配方案

方案1:原生字符串方法实现(无需导入依赖)

代码如下:

# 测试用例1:Sku开头
s = 'T1 Test 2 Sku Red Widget at 10.0'
# 测试用例2:Id开头,替换即可验证
# s = 'X3 Sample 5 Id Black Device at 49.9'

# 分别查找两个起始标记的位置
sku_pos = s.find('Sku ')
id_pos = s.find('Id ')

# 确定有效起始位置
if sku_pos != -1:
    start_pos = sku_pos + 4
else:
    start_pos = id_pos + 3

end_pos = s.find(' at')
target = s[start_pos:end_pos]
print(target)

适配逻辑:

  • 优先判断是否存在Sku 标记,存在的话跳过4个字符(Sku 本身长度)作为起始截取位置
  • 不存在Sku 标记时默认命中Id 标记,跳过3个字符(Id 本身长度)作为起始截取位置
  • 终止截取逻辑保持原有规则不变,以 at的位置作为截取终点

方案2:正则表达式实现(扩展性更强)

如果后续可能新增其他起始标记,用正则的方式修改成本更低:

import re

s = 'X3 Sample 5 Id Black Device at 49.9'
res = re.search(r'(?:Sku|Id)\s+(.*?)\s+at', s)
if res:
    target = res.group(1)
    print(target)

正则规则说明:

  • (?:Sku|Id) 匹配Sku或Id两个可选的起始前缀,?:表示不需要单独提取该前缀分组
  • \s+ 匹配前缀和目标内容之间的空格,兼容可能出现的多个空格场景
  • (.*?) 非贪婪匹配目标内容,直到遇到后续的 at标记停止匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:48:03