【问题标题】:Pass Python array to javascript?将Python数组传递给javascript?
【发布时间】:2015-11-23 06:48:03
【问题描述】:

我是 HTML/javascript 新手。我正在运行一个本地服务器,带有一个 html/javascript 文件和一个单独的 python 脚本。

问题:如何将 python 数组传递给 javascript 变量?

到目前为止的工作: 我已将数组写入文件data.txt

1  32.1
2  10.0

但如果更简单的话,我可以将其放入 JSON 格式。

这是我目前的进展

var x_pos = [];
jQuery.get('http://127.0.0.1:8000/data/data.txt',function(data){

// ??? Code here ???

});

console.log(x_pos[0])

注意:如果有更简单的方法可以做到这一点,我愿意接受建议。谢谢。

【问题讨论】:

  • 您可以在每个换行符处拆分,然后在数字和值之间的空格处再次拆分。

标签: javascript jquery python html


【解决方案1】:

改用 JSON。然后你可以把它解析为

jQuery.get('http://localhost/data.txt', function(data) {
  var xy = JSON.parse(data);
});

并用作

alert(xy['1']); // or xy.propertyname if it is not-numeric

你的数据结构会是这样的

{
  "1": 32.1,
  "2": 0
}

【讨论】:

  • 这是一个文本文件,你怎么能在不是json格式的东西上使用json.parse?
  • @Daniel_L THIS 是一个更好的解决方案。
  • OP 指定如果有更好的方法来通过更改文本文件的格式和/或扩展名来处理解析,我们应该建议它,所以我同意将文本放入 json 格式会极大地简化了解析,并为 OP 提供了将数据转换为变量的最简单方法。
  • @brso05 我一开始没有看到。我已经相应地调整了我的投票。不以粗体向 cmets 发送垃圾邮件
  • @anon0909 JSON 使用起来非常舒适,易于阅读,几乎所有编程语言都支持它,这使其成为客户端和服务器之间通信的最佳方式之一。
【解决方案2】:

只需为此创建一个 json 结构并在之后执行 JSON.parse(data)

这是你的结构:

{x: [1,2,3,4], y:[32.1,10.0,76.3]}

【讨论】:

    【解决方案3】:
    var x_array = [];    
    var y_array = [];     
    
    jQuery.get('http://localhost/test/data.txt',function(data){
        var lines = data.split(/\r\n|\n/g);
        for (var i = 0; i < lines.length; i++) {
            line = lines[i].split(/\s+/g);
            x_array.push(line[0]);
            y_array.push(line[1]);
        }
        console.log(x_array);
        console.log(y_array);
    });
    

    【讨论】:

    • 如果 OP 有 \r\n 作为回车符怎么办?
    • 已更新以处理 \r\n 大小写以及文本文件每一行中两个值之间的一个或多个空格。
    • 是的,这也是我解析文件split('\n')和行split('\s+')的方法
    • @MazzCris 谢谢,这很好用……除了console.log(x_array)jQuery.get(...) 调用之外返回undefined。有什么建议?我以为我掌握了范围:/
    • @anon0909 jQuery.get() 是异步的(作为此处解释的简写 Ajax 函数:api.jquery.com/jquery.get)。无论如何,我认为在这种情况下你应该得到一个空数组(因为它已被初始化),而不是 undefined
    【解决方案4】:

    其中一个解决方案是使用拆分。它拆分字符串。

        var newData = [];
        data = data.split('\n');
        data.forEach(function(entry){
          entry = entry.split(' ');
          newData.push({
            x : entry[0],
            y : entry[1]
          });
        });
        console.log(newData);
    

    【讨论】:

      【解决方案5】:

      您需要使用正则表达式来解析文本文件。您不能只对非 json 格式的字符串使用 JSON.parse()

      http://plnkr.co/edit/39aBGgwvNI7Lem6eiefu?p=preview

      $.get("http://localhost/data.txt", parse);
      
      function parse(str) {
          var lineBreak = /\r\n/g;
          var space = /\s/g;
          var tmp = str.split(lineBreak).map(function(l) {
              var split = l.split(space);
              return { key: split[0], val: split[1]  };
          });
          var data = JSON.stringify(tmp, null, 2);
          $("#data").text(data);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-05-25
        • 2011-05-16
        • 2014-05-03
        • 2012-12-15
        • 2013-02-03
        • 2012-06-26
        • 1970-01-01
        • 1970-01-01
        • 2014-06-11
        相关资源
        最近更新 更多