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 scrip に渡すより良い方法はありますか?

よろしくお願いします。

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 に答える