首页 > 解决方案 > 将 JavaScript TemplateLiteral 转换为 python 字典

问题描述

我想解析定义包含 TemplateLiterals (``) 的数据的 JavaScript 代码。

这是一个简单的例子

let data = {
cat: 'Retail', name: 'Dollar Mania', value: 30,
icon: 'img/dollarmania.png',
desc: `
        Best store in town! 

        <p>Founded in 2011</p>

`}

将此JS对象转换为python字典的最佳pythonic方法是什么?

标签: javascriptpythondictionary

解决方案


最安全的方法是在 JavaScript 中运行对象定义,然后使用 JavaScript 将其导出为 Python 可以原生读取的格式。JSON 是一种合适的格式。这将避免您必须在 Python 中编写 JavaScript 解析器,这将不得不考虑许多边缘情况。

在 JavaScript 中,将局部变量中的对象转换data为 JSON,然后将其打印到 stdout:

const dataAsJsonString = JSON.stringify(data);
console.log(dataAsJsonString);

您的 Python 程序可以使用 Python 的内置 JSON 解析库来解码 JavaScript 的输出:

import json

dataAsJsonString = sys.stdin.read()
data = json.loads(dataAsJsonString)

要将数据从 JavaScript 传递到 Python,您可以使用 Node 运行 JavaScript 程序并将其输出通过管道传输到您的 Python 程序:node dataSource.js | python data_reader.py. 或者,如果您无法使用 Node 运行 JavaScript,您可以将控制台输出复制到剪贴板,然后通过管道将操作系统的命令粘贴到您的 Python 程序,例如pbpaste | python data_reader.pyxclip -out -selection clipboard | python data_reader.py.


推荐阅读