0

ファイル (1 列 x 900 行) を読み取り、リストから JSON オブジェクトを作成する数行の Python コードがあります。私が直面している問題は、リスト内の各項目から改行を削除しようとするときです。以下にいくつかの例を示します。

このコードの読み取りには約 11 秒かかります (900 行)。

fh = open(wholefName)
fc = fh.read()
fh.close()

このコードには約 17 分かかります。

fh = open(wholefName)
fc = fh.read()
fh.close()
markerArray = fc.splitlines()

代わりに「fc = fh.readlines」を使用すると、リスト内の各項目の最後に「\n」が付きます。また、「lst.append(pn.split())」のjson_list定義に.split()を配置しようとしました。

これは私の完全なコードがどのように見えるかです:

def json_list(list):
  lst = []
  for pn in list:
    lst.append(pn)
  return json.dumps(lst)

fh = open(wholefName)
fc = fh.read()
fh.close()
markerArray = fc.splitlines()

print json_list( markerArray )

Windowsで Python 2.6.2* *を使用してJythonを実行しています。

* *編集: 申し訳ありませんが、Windows で Python 2.5.2 を実行しています。

4

2 に答える 2

3

関数呼び出し (役に立たない) を削除すると、より高速になるはずです。

with open(wholefName) as fh:
    json.dumps(fh.read().splitlines())

もう 1 つ知っておくべきことは、Python 2 には 2 つのバージョンのjsonモジュールがあることです。1 つは純粋な Python で記述され、もう 1 つは C で記述されています。私が知っているように、Jython は C 拡張機能をサポートしていないため、おそらく必然的に遅い Python バージョンを使用していること。コードを Java で記述するのが最善の方法です。

于 2013-07-15T17:21:42.020 に答える
1

テキスト ファイルを json でエンコードされた文字列に変換する最良の方法は次のとおりです。

def file_to_json(filename):
    return json.dumps([l.strip() for l in open(filename)])

結果を新しいファイルに保存したい場合は、中間のものをスキップできます。

def file_to_json(from_filename, to_filename):
    json.dump([l.strip() for l in open(from_filename)],
        open(to_filename, 'w'))
于 2013-07-15T18:22:48.343 に答える