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
相关产品推荐
相关产品推荐

