1

Python を使用して大きなテキスト ファイルを処理しています。ファイルの各行は完全な JSON メッセージであり、非常に長い場合があります。各行に関する情報をデータベースに挿入する必要があります。この情報は非常に単純です。行の長さと、各メッセージに含まれる一意の ID です。したがって、各行にはフォームがあります

{"field1":"val1", ..., "ID":"12345", ..., "fieldK":"valK"}

メッセージから「12345」を抽出する必要があります。

今、私は文字列全体をロードしてjson.loads()からIDを見つけ、残りを無視します。

私のコードは遅すぎるので、スピードアップする必要があります。文字列全体のようにロードするよりも速く「ID」を抽出する方法があるかどうかを確認しようとしています。1 つのオプションは、文字列で「ID」を検索してから処理すること:"12345"です。しかし、メッセージの別の場所に部分文字列「ID」があると、脆弱になる可能性があります。

それで、IDを見つけるために行を部分的にロードする方法はありますか?

4

1 に答える 1

0

いくつかのパスをお勧めします。

入力が非常に大きい場合、それを完全にメモリにロードするのは無駄かもしれません。各行を個別にロード/解析する方が速い場合があります。

上記が役に立たない場合は、ファイル内の正しい ID を検索する方法を工夫することは悪い考えではありません。ID:実際に正しい数値を見つけたら、入力がコーシャであることを確認してください。したがって、次のことを行う必要があります。

  1. 期待する ID を (正規表現またはその他の方法で) 検索します。
  2. 一致する場合は、実際に行を解析し、有効であることを確認してください。そうでない場合 (たとえば、ID:文字列に埋め込まれているだけ)、削除して検索を続けます。

(2) の不当な発生はまれであるため、検証は非常に効率的である必要はありません。

于 2013-01-28T01:31:03.580 に答える