javascript - 将 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方法是什么?
解决方案
最安全的方法是在 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.py
或xclip -out -selection clipboard | python data_reader.py
.
推荐阅读
- git - git:撤消函数中的更改
- python-3.x - 在 VS CODE 中请求键盘快捷键
- javascript - 页面加载时手风琴箭头错误
- javascript - How to display a string value on multiple lines in a paragraph that contains
as a new line character - javascript - Running code before and after each Method call in Meteor
- java - 带自动增量的 JDBC 插入
- kubernetes - k8s 集群上的 GlusterFS 部署——就绪探测失败:/usr/local/bin/status-probe.sh
- html - 将文本放在图像的左上角,百分比顶部和左侧偏移
- asp.net-core - 在 ASP.NET Core 中使用 ViewModel 将数据传递给 View
- javascript - 如何使用 for 循环向 JS 变量添加值?