将文件中的 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)

;)