1

这就是我正在做的事情:

我正在获取一个多维数组,或者更确切地说,是一个哈希数组,并尝试将它从我的 perl 脚本传递到 python 脚本中。目前我正在将其转换为 json,然后将 json 字符串作为文字字符串作为参数传递给 python 脚本。

哈希数组类似于以下示例:

 %HoH = (
id10001 => {
    lat   => "180",
    long  => "-180",
},
id10002 => {
    lat   => "180",
    long  => "-180",
},
id10003 => {
    lat   => "180",
    long  => "-180",
}
);

然后我在我的 perl 脚本中,变成一个 json 字符串:

{
    "id10001": { "lat": "180", "lon": "-180" },
    "id10002": { "lat": "180", "lon": "-180" },
    "id10003": { "lat": "180", "lon": "-180" },
}

然后将其传递给python脚本。python 脚本将 json 字符串解码回原始构造的数组结构。

有没有更好的方法将数组或多维数组从 perl 脚本传递到 python 脚本?

预先感谢您的帮助

4

2 回答 2

7

不,根据其定义,序列化是通过纯字符缓冲区(例如命令行参数、文件或其他任何内容)传递数据的唯一方法。只要特定的序列化格式——JSON 就是这种情况——自然地涵盖特定于语言的结构,你就准备好了。

如果您愿意,您可以尝试使用 Perl 和 Python 都可用的序列化格式的基准测试库,看看哪种情况会更快,但至少 Perl 的 JSON 的 XS 实现速度非常快,并且通常在速度上优于其他可用的序列化器。

于 2012-07-03T16:14:58.610 回答
1

您的 JSON 结构似乎很奇怪;与您在 Perl 中显示的结构类似的结构更像

{
    "id10001": { "lat": "180", "lon": "-180" },
    "id10002": { "lat": "180", "lon": "-180" },
    "id10003": { "lat": "180", "lon": "-180" },
}

(尽管您在 Perl 中有括号约定,但您有一个散列散列,而不是一个散列数组。此外,对于纬度/经度值使用字符串而不是数字有什么特别的原因吗?)

但除此之外,你有正确的想法。

于 2012-07-03T17:17:40.073 回答