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

如何提取MDSYS.SDO_ORDINATE_ARRAY内数值并两两配对存为列表

解决方案

完整可运行代码如下:

import re

op = []
ip = 'MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1), MDSYS.SDO_ORDINATE_ARRAY(22027, 22943, 22026, 22939, 22025, 22936, 22025, 22932, 22027, 22929, 22030, 22926)'
m = re.search(r"\bMDSYS\.SDO_ORDINATE_ARRAY\(([^()]+)\)", ip)
if m:
    # 提取所有数字并转为整数类型
    nums = list(map(int, re.findall(r"\d+", m.group(1))))
    # 步长为2遍历,两两拼接为元组
    op = [(nums[i], nums[i+1]) for i in range(0, len(nums), 2)]
print(op)

运行输出结果和期望完全一致:

[(22027, 22943), (22026, 22939), (22025, 22936), (22025, 22932), (22027, 22929), (22030, 22926)]

核心修改说明:

  • 补充了import re语句,正则模块需要先导入才能正常调用
  • 把提取到的数字字符串统一转换为整数类型,避免存储为字符串格式
  • 替换原有的字符串拼接逻辑,改为步长为2的列表推导式,每次取相邻两个元素组成元组,直接生成符合要求的结果列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 16:15:03