5

Python(2.7)を使用してjsonに変換しようとしているパイプ区切りファイルがあります。コードはテキスト ファイルを読み取り、区切り記号に基づいて変換し、json に変換します。

コードを実行すると、ターミナル ウィンドウに正しい出力が表示されます。ただし、ファイルに書き込むと、エスケープ スラッシュ \ が出力に追加されます。また、出力ファイルの先頭と末尾にエスケープなしの引用符が追加されています。

他の回答に基づいて、jsonダンプを処理するたびにensure_asciiをfalseに設定しようとしました。しかし、それはうまくいきません。

入力.txt:

392|0|9

コード:

import csv
import json

f = open( 'input.txt', 'rU')
reader = csv.DictReader( f, fieldnames = ( "A", "B", "C" ), delimiter='|')
out = json.dumps([ row for row in reader ], ensure_ascii=False)
print out
with open('data.json', 'w') as outfile:
  json.dump(out, outfile, ensure_ascii=False)

ターミナルでの出力:

[{"A": "392", "C": "9", "B": "0"}]

data.json での出力:

"[{\"A\": \"392\", \"C\": \"9\", \"B\": \"0\"}]"

私はPythonが初めてです。.json ファイルから引用符 (先頭と末尾) とスラッシュを削除するにはどうすればよいですか?

4

1 に答える 1

9

データを JSON に2 回エンコードしています。out既にJSON エンコードされていますが、JSON 文字列を にダンプして再度エンコードしますoutfile

再度エンコードせずに書き出すだけです。

with open('data.json', 'w') as outfile:
    outfile.write(out)

ensure_ascii=Falseこのオプションを削除すると、 Unicodejson.dumps()値が生成されるため、ファイルに書き込むときに、それらを適切なコーデック (読み取り、UTF バリアントの 1 つ) にエンコードする必要があります。

于 2013-09-27T20:37:13.763 に答える