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

Python如何从网页抓取的字符串中提取数据生成多维数组

简单实现方案

核心思路

你抓取到的内容里等号右侧本身就是标准的嵌套列表字面量格式,只要把这部分内容截取出来,安全转换成Python的列表对象即可,不需要复杂的正则匹配。

实现代码

import ast

# 把你抓取到的5行字符串放到这个列表里
raw_js_lines = [
    "  charts[1]['min']    = [['Mi',5.6],['Do',2.9],['Fr',1.7],['Sa',3.7],['So',2.9],['Mo',4.1],['Di',4]];",
    "  charts[1]['mittel'] = [['Mi',6.2],['Do',5.4],['Fr',3.9],['Sa',4.5],['So',4.7],['Mo',5.4],['Di',4.6]];",
    "  charts[1]['max']    = [['Mi',7.2],['Do',8.8],['Fr',5.9],['Sa',5.5],['So',6.8],['Mo',6.6],['Di',5.8]];",
    "  charts[2]['line']   = [['Mi',59],['Do',69],['Fr',72],['Sa',65],['So',66],['Mo',65],['Di',76]];",
    "  charts[3]['line']   = [['Mi',5],['Do',4],['Fr',0],['Sa',5],['So',0],['Mo',5],['Di',0]];"
]

result = []
for line in raw_js_lines:
    # 截取等号右侧内容,去除前后空格
    right_content = line.split('=', 1)[1].strip()
    # 去掉末尾的分号
    list_content = right_content.rstrip(';')
    # 安全转换为Python列表
    converted_list = ast.literal_eval(list_content)
    # 追加到结果,要扁平化存储就把append改成extend
    result.append(converted_list)

结果说明

  • 最终result是一个二维嵌套数组,result[0]对应charts[1]['min']的列表数据,result[0][0]就是['Mi', 5.6]的单条数据
  • 如果需要把所有星期和数值对放到同一个一维数组里,把result.append(converted_list)改成result.extend(converted_list)即可
  • 用ast.literal_eval而不是eval,是因为前者只会转换字面量结构,不会执行任意代码,安全性更高,非常适合处理你这种场景的字符串转换需求

内容的提问来源于stack exchange,提问作者Jörg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:54:08