【问题标题】:reading json data from js file in python从python中的js文件读取json数据
【发布时间】:2018-04-07 08:36:06
【问题描述】:

我正在使用 html 输入文件标签上传一个 js 文件。我正在用python读取数据。由于在我的数据中写入了 var acb_messages。我无法解析它。我想用这个变量名来获取数据。所以我可以删除它。

var acb_messages = {"messages": [{
    "timestamp": 1475565742761,
    "datetime": "2016-10-04 12:52:22 GMT+05:30",
    "number": "VM-449700",
    "id": 1276,
    "text": "Some text here",
    "mms": false,
    "sender": false
    }
]}

请帮助如何在python中解析它以及如何使用它

【问题讨论】:

  • 请展示您尝试过的内容以及所需的输出

标签: javascript python json python-2.7


【解决方案1】:

如果我在你的位置,我会尝试两种方法 -

  1. 将我的 .js 文件转换为 .json 文件,然后使用@Sandeep Lade 建议的方法。

  2. 将 .js 文件读取为字符串,裁剪出值部分,然后按照 @rahul mr 的建议使用 json.loads(<cropped part>)

这里是如何实现第二个解决方案 -

import json

with open('your_js_file.js') as dataFile:
    data = dataFile.read()
    obj = data[data.find('{') : data.rfind('}')+1]
    jsonObj = json.loads(obj)

这里发生的情况是,您发现首先将 .js 文件(包含需要转换为 json 的 js 对象)作为字符串读取,找到第一次出现的 { 和最后一次出现的 },裁剪字符串的一部分,将其加载为 json。

希望这是您正在寻找的。​​p>

警告 - 仅当您的 js 文件仅包含 js 对象时,代码才有效。

【讨论】:

    【解决方案2】:

    上面的选项都是正确的,但是 JS 中的 JSON 语法可能与 Python 中的有点不同:

    example.js:

    property.docs = {
        messages: {
        timestamp: 1475565742761,
        datetime: "2016-10-04 12:52:22 GMT+05:30",
        number: "VM-449700",
        id: 1276,
        text: "Some text here",
        mms: false,
        sender: false
    }
    };
    

    因此,我们需要我在以下位置找到的另一项调整:How to convert raw javascript object to python dictionary?

    完整的代码应该是:

    import json
    import demjson
    
    with open('example.js') as dataFile:
        data = dataFile.read()
        json_out = data[data.find('{'): data.rfind('}')+1]
        json_decode = demjson.decode(json_out)
    
    print(json_decode)
    

    【讨论】:

      【解决方案3】:
      import json
      jsonfile=open("/path/to/json file")
      data=json.load(jsonfile)
      

      上面的代码将把你的json数据存储在一个名为data的字典中。然后您可以处理字典

      【讨论】:

      • 此代码不适用于 OP 中的给定示例,因为它是 Javascript。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 2014-11-28
      • 2014-10-15
      相关资源
      最近更新 更多