如何使用python从.js文件中提取javascript变量?

如何使用python从.js文件中提取javascript变量?,javascript,python,Javascript,Python,我试图提取变量chartData中的JSON数据。这存储在一个.js文件中,该文件为我的太阳系生成了一张图表。我想提取这些数据,以便将其存储在单独的数据库中 然而,我似乎找不到一种方法来用python提取JSON数据 这是.js文件 var chartData = { "labels": [ "1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","2

我试图提取变量chartData中的JSON数据。这存储在一个.js文件中,该文件为我的太阳系生成了一张图表。我想提取这些数据,以便将其存储在单独的数据库中

然而,我似乎找不到一种方法来用python提取JSON数据

这是.js文件

var chartData =
{
"labels":
[
"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"],
"datasets":
[
{
"strokeColor":" rgba(64,178,83,1.0)",
"fillColor":" rgba(64,178,83,.5)",
"data": [
15.101000,9.819000,9.966000,19.634000,18.403000,17.015000,20.356000,20.645000,5.443000,14.542000,13.513000,9.774000,15.053000,16.870000,10.582000,
15.139000,7.230000,9.019000,18.687000,16.074000,17.183000,23.353000,22.248000,22.762000,22.458000,20.809000,18.034000,12.810000,15.627000,21.057000,
19.589000]
}
]
}
var max = 25;
var steps = 5;
var input = document.getElementById("inputId");
input.setAttribute("min",   "2019-02");
input.setAttribute("max",   "2020-01");
input.setAttribute("value", "2019-08");
document.getElementById("labelValueId").innerHTML = " 498.812kWh 08.2019";
document.getElementById("buttonPrevId").disabled  = false;
document.getElementById("buttonNextId").disabled  = false;
var myBar = new Chart(document.getElementById("canvasId")
.getContext("2d"))
.Bar(chartData,
{
"pointDot": false,
"datasetFill": false,
"scaleOverride": true,
"scaleLabel": "<%=value%> kWh",
"scaleSteps": steps,
"scaleStartValue": 0,
"scaleStepWidth": Math.ceil(max / steps),
"scaleLineColor":" rgba(170,170,170,1.0)",
"scaleFontColor":" rgba(170,170,170,1.0)",
"scaleGridLineColor":" rgba(68,68,68,1.0)"});
var图表数据=
{
“标签”:
[
"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"],
“数据集”:
[
{
“strokeColor”:“rgba(64178,83,1.0)”,
“填充颜色”:“rgba(64178,83,5)”,
“数据”:[
15.101000,9.819000,9.966000,19.634000,18.403000,17.015000,20.356000,20.645000,5.443000,14.542000,13.513000,9.774000,15.053000,16.870000,10.582000,
15.139000,7.230000,9.019000,18.687000,16.074000,17.183000,23.353000,22.248000,22.762000,22.458000,20.809000,18.034000,12.810000,15.627000,21.057000,
19.589000]
}
]
}
var max=25;
var阶数=5;
var input=document.getElementById(“inputId”);
输入.setAttribute(“最小”、“2019-02”);
输入。设置属性(“最大”、“2020-01”);
输入.setAttribute(“值”,“2019-08”);
document.getElementById(“labelValueId”).innerHTML=“498.812kWh 08.2019”;
document.getElementById(“ButtonProvid”).disabled=false;
document.getElementById(“buttonNextId”).disabled=false;
var myBar=新图表(document.getElementById(“canvasId”)
.getContext(“2d”))
.Bar(图表数据,
{
“pointDot”:错误,
“数据集填充”:false,
“scaleOverride”:正确,
“scaleLabel”:“kWh”,
“scaleSteps”:步骤,
“scaleStartValue”:0,
“缩放宽度”:数学单元(最大/步数),
“scaleLineColor”:“rgba(1701.0)”,
“scaleFontColor”:“rgba(1701.0)”,
“scaleGridLineColor”:“rgba(68,68,68,1.0)”;

如果变量
txt
中是您的javascript字符串,那么您可以使用
re
json
模块加载数据:

import re
import json

m = re.findall(r'chartData =.*?({.*}).*?(?=var max)', txt, flags=re.S)[0]
data = json.loads( m )

print(data['datasets'][0]['data'])
印刷品:

[15.101, 9.819, 9.966, 19.634, 18.403, 17.015, 20.356, 20.645, 5.443, 14.542, 13.513, 9.774, 15.053, 16.87, 10.582, 15.139, 7.23, 9.019, 18.687, 16.074, 17.183, 23.353, 22.248, 22.762, 22.458, 20.809, 18.034, 12.81, 15.627, 21.057, 19.589]

这是一个怎样的javascript文件?看起来它只是JSON。