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

如何提取字符串中间特定子串后的逗号分隔数字序列?

解决方案

方法一:解析为Python字典(推荐)

这个字符串本质是Python字典的字符串表示,直接解析成字典取值是最可靠的方式,能避免正则表达式可能遇到的边界问题。

import ast

# 原始字符串
str_data = "{'Port': '2', 'Array': '[0, 0]', 'Field': '[2,2]', 'foo': '[0, 0]' , 'bar': '[9, 9]'}"
# 解析为字典对象
data_dict = ast.literal_eval(str_data)
# 获取Field对应的值
field_value = data_dict['Field']
# 若需要去掉方括号,执行以下步骤
field_value_no_brackets = field_value.strip('[]')

print(field_value)  # 输出: [2,2]
print(field_value_no_brackets)  # 输出: 2,2

方法二:使用正则表达式

如果必须用正则,可通过匹配'Field'键后的单引号包裹内容来提取值,这个正则能兼容键值对在字符串任意位置的情况:

import re

str_data = "{'Port': '2', 'Array': '[0, 0]', 'Field': '[2,2]', 'foo': '[0, 0]' , 'bar': '[9, 9]'}"
# 匹配Field对应的取值
match_result = re.search(r"'Field':\s*'([^']+)'", str_data)
if match_result:
    field_value = match_result.group(1)
    field_value_no_brackets = field_value.strip('[]')
    print(field_value)  # 输出: [2,2]
    print(field_value_no_brackets)  # 输出: 2,2

正则说明

  • 'Field': 精准匹配目标键
  • \s* 匹配键和值之间任意数量的空格,处理格式差异
  • '([^']+)' 捕获单引号内的所有内容,即Field对应的值,包含方括号、逗号和数字

你之前用的'Port':\ .([0-9]+)仅适配单个数字的取值,且固定匹配空格+单个数字,无法兼容带方括号的多数字序列,所以对Field的情况不适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:20:32