将文件中的 JavaScript 对象读入 Python 数组
reading JavaScript object in a file into a Python array
我有一个 javascript 文件,其中包含我希望 Python 读取的对象(Python 3 就可以了)。像这样:
let variable_i_do_not_want = 'foo'
let function_i_do_not_wnt = function() {
}
// .. etc ..
// --- begin object I want ---
myObject = {
var1: 'value-1',
var2: 'value-2',
fn2: function() {
"I don't need functions.."
},
mySubObject: {
var3: 'value-3',
.. etc ..
}
}
// --- end object I want ---
// .. more stuff I don't want ..
我想将 myObject
转换为 python dict 对象。注意我真的不需要函数,只需要键和值。
我可以(并且能够)添加注释标记 before/after 并隔离对象。但我想我需要一个库来将该字符串转换为 Python 字典。这可能吗?
如果您可以直接在 javascript 文件中添加一些内容,那么使用 python 执行此操作将会避免很多工作。 (正如你所说,你可以修改js文件)
我假设您已经预装了 nodejs 和 npm(如果没有,您可以从 here
安装
您需要在JS文件末尾添加这几行代码。
const fs = require("fs");
const getVals = (obj) => {
let myData = {};
for (const key in obj) {
if (
!(typeof obj[key] === "function") && // ignore functions
(!(typeof obj[key] == "object") || Array.isArray(obj[key])) // ignore objects (except arrays)
) {
myData[key] = obj[key];
} else if (typeof obj[key] === "object") { // if it's an object, recurse
myData = {
...myData,
...getVals(obj[key]),
};
}
}
return myData;
};
// storing the data into a json file
fs.writeFile(
"myjsonfile.json",
JSON.stringify(JSON.stringify(getVals(myObject))), //change your variable name here instead of myObject (if needed)
(err) => {
if (err) throw err;
console.log("complete");
}
);
添加后,您可以通过
运行 js 文件
~$ npm init -y
~$ node yourjsfile.js
这将创建一个名为 myjsonfile.json 的新文件,其中包含您可以像这样从 python 加载的数据
import json
with open('myjsonfile.json') as file:
d=json.loads(file.read()) #your dict
print(d)
;)
我有一个 javascript 文件,其中包含我希望 Python 读取的对象(Python 3 就可以了)。像这样:
let variable_i_do_not_want = 'foo'
let function_i_do_not_wnt = function() {
}
// .. etc ..
// --- begin object I want ---
myObject = {
var1: 'value-1',
var2: 'value-2',
fn2: function() {
"I don't need functions.."
},
mySubObject: {
var3: 'value-3',
.. etc ..
}
}
// --- end object I want ---
// .. more stuff I don't want ..
我想将 myObject
转换为 python dict 对象。注意我真的不需要函数,只需要键和值。
我可以(并且能够)添加注释标记 before/after 并隔离对象。但我想我需要一个库来将该字符串转换为 Python 字典。这可能吗?
如果您可以直接在 javascript 文件中添加一些内容,那么使用 python 执行此操作将会避免很多工作。 (正如你所说,你可以修改js文件)
我假设您已经预装了 nodejs 和 npm(如果没有,您可以从 here
安装您需要在JS文件末尾添加这几行代码。
const fs = require("fs");
const getVals = (obj) => {
let myData = {};
for (const key in obj) {
if (
!(typeof obj[key] === "function") && // ignore functions
(!(typeof obj[key] == "object") || Array.isArray(obj[key])) // ignore objects (except arrays)
) {
myData[key] = obj[key];
} else if (typeof obj[key] === "object") { // if it's an object, recurse
myData = {
...myData,
...getVals(obj[key]),
};
}
}
return myData;
};
// storing the data into a json file
fs.writeFile(
"myjsonfile.json",
JSON.stringify(JSON.stringify(getVals(myObject))), //change your variable name here instead of myObject (if needed)
(err) => {
if (err) throw err;
console.log("complete");
}
);
添加后,您可以通过
运行 js 文件~$ npm init -y
~$ node yourjsfile.js
这将创建一个名为 myjsonfile.json 的新文件,其中包含您可以像这样从 python 加载的数据
import json
with open('myjsonfile.json') as file:
d=json.loads(file.read()) #your dict
print(d)
;)