【问题标题】:Import javascript array from local file into local python file将javascript数组从本地文件导入本地python文件
【发布时间】:2020-11-24 22:54:27
【问题描述】:

我有一个本地 javascript 文件,其中包含这样的数组:

file1.js:

export const arr = ['a', 'b', 'c']

我可以在同一台机器和同一项目中的 python 脚本中将此数组作为 python 列表(或任何其他数据类型)导入吗?理想情况下,它看起来像这样:

file2.py:

from ..path.to.javascript.file1.js import arr

但这不起作用。如果我将数组导出为 JSON 字符串化对象,是否有可能?

【问题讨论】:

  • 是的,和 XML 一样,JSON 是一种可互换的格式,可以被多种语言解析和理解。因此,将您的数组转换为 JSON,然后在 Python 中解析它就可以了。但是您必须要么将 JSON 从客户端发送到服务器,要么拥有一个带有 JSON 的静态文件才能在 Python 脚本中使用它。

标签: javascript python python-import


【解决方案1】:

假设您可以将 JSON 写入文件,您可以像这样在 Python 中读取它:

import json

with open("file.json") as f:
    json_file = json.loads(f)

【讨论】:

    【解决方案2】:

    有两种方法可以做到这一点:

    1. 将您的 .js 文件转换为 .json 并将数组更改为正确的 json 格式,如下所示:

      {"arr": ["a", "b", "c"]}

      json 格式需要双引号。 (另外最好将数组嵌入到 json 对象中以避免 security vulnerability 尽管可以将数组作为 json 顶级。)然后使用内置的 json 模块读取 json。

    2. 将 .js 文件作为字符串读取,并使用 ast.literal_eval 提取列表。它将安全地将字符串转换为列表。

    第一种方法:

    import json
    
    with open("file1.js") as f:
        li = json.load(f)['arr']   #note that you use load(), not loads() to read from file
    

    第二种方法:

    import ast
    
    with open(file1.js') as dataFile:
        data = dataFile.read()
        str = data[data.find('[') : data.rfind(']')+1]
        li = ast.literal_eval(str)
    

    【讨论】:

    • 请注意,对于第一种方法,它 li 将是一个字典,其中“arr”作为其唯一键,列表作为值。因此,要将列表分配给 li,请执行以下操作: li = json.load(f)['arr']
    • @Alex 当我使用 Visual Studio 进行测试时,文件直接加载到列表中。但是,在命令行和 PyCharm 中进行测试时,我得到的结果与您相同。为了避免这些差异和顶级数组的安全漏洞,最好将数组嵌入到 json 对象中。请参阅上面的更新。
    猜你喜欢
    • 2020-01-30
    • 2016-04-23
    • 2021-10-29
    • 1970-01-01
    • 2012-02-17
    • 2016-04-02
    • 2020-05-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多