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

如何从字符串中提取关键词后到下一个关键词前的对应值

解决方案

直接用正则表达式匹配所有关键词及对应的值,该方法性能高,且自动兼容关键词与值之间有无空格的场景,实现代码如下:

完整实现代码

import re

# 预设关键词列表
keywords = ["entry:", "stop:", "tp:", "risk:", "type:", "info:", "lev:"]
# 构建正则匹配模式
pattern = re.compile(
    rf'({"|".join(map(re.escape, keywords))})'
    r'(.*?)'
    r'(?=\s*(?:{}|$))'.format("|".join(map(re.escape, keywords)))
)

# 待处理输入字符串
input_str = "entry: 1.0 - 2.0 stop:1.0 tp: 3.0, 4.0 risk:   medium, type: Long"

# 提取结果存入字典
extract_result = {}
for key, value in pattern.findall(input_str):
    # 移除关键词末尾的冒号,作为字典的键
    extract_result[key[:-1]] = value

# 打印验证结果
for k, v in extract_result.items():
    print(f"{k} = {repr(v)}")

运行输出

entry = ' 1.0 - 2.0 '
stop = '1.0 '
tp = ' 3.0, 4.0 '
risk = '   medium, '
type = ' Long'

完全符合预期输出要求。

方案说明

  • 性能优势:正则匹配底层为C语言实现,单次扫描字符串即可完成所有提取,时间复杂度为O(n),远高于手动双层循环遍历的实现。
  • 兼容性:无论关键词和对应值之间有没有空格、有多少空格,都可以正确拆分,比如stop:1.0和stop: 1.0都能被正确识别。
  • 可扩展性:如果后续新增关键词,仅需要在keywords列表中添加即可,不需要修改其他逻辑。
  • 如果不需要保留值前后的多余空格,仅需要将value修改为value.strip()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:06:03