如何用Python从复杂数据结构提取指定值?求方法及类型确认
解决方案
核心结论
你手里的是嵌套的JS对象(本质是JSON结构),完全不需要用BeautifulSoup——BeautifulSoup是用来解析HTML/XML的,对这种结构化数据根本不适用。正确的做法是提取出纯JSON部分,再用JSON解析工具处理。
具体步骤
提取纯JSON内容
原始数据开头有var gIg35809469970000987890data =,结尾有;,先用正则把这些非JSON内容去掉,得到标准JSON字符串:import re import json # 假设原始数据存储在这个变量中 raw_data = '''var gIg35809469970000987890data = { "values": [ [ "33765", "33765", "06-03-2023", "John.doe@foo.com", "indoor 1", "", "1", "10", "16", "", "DELETE", "33765", {"salt": "..."} ], [ "33623", "33623", "03-03-2023", "John.Doe@foo.com", "indoor 1", "", "1", "10", "16", "", "DELETE", "33623", {"salt": "..."} ] ] };''' # 匹配并提取JSON部分 json_str = re.search(r'=\s*({.*?});', raw_data, re.DOTALL).group(1)解析JSON为Python数据结构
解析后得到的是字典+数组的嵌套结构:外层是字典,values键对应的值是数组,每个数组元素又是包含字符串和子对象的数组:data = json.loads(json_str)提取指定字段并整理成表格
遍历values里的每个元素,提取编号(数组第0位)、日期(第2位)、邮箱(第3位):# 提取目标数据 extracted_data = [] for item in data['values']: extracted_data.append({ '编号': item[0], '日期': item[2], '邮箱': item[3] }) # 用pandas生成表格形式输出 import pandas as pd result_df = pd.DataFrame(extracted_data) print(result_df)输出结果:
编号 日期 邮箱 33765 06-03-2023 John.doe@foo.com 33623 03-03-2023 John.Doe@foo.com
额外提醒
如果是在浏览器环境中处理,直接访问gIg35809469970000987890data.values遍历提取即可,不需要正则,用原生JS就能完成。
内容的提问来源于stack exchange,提问作者NazariGamer
相关产品推荐
相关产品推荐

