2

ここや他の場所でかなり多くの投稿を読みましたが、解決策が見つからないようです。そして、私はそれをオンラインで変換したくありません。

ここで見つけたこのコードを使用して、 CSVファイルをJSONファイルに変換したいと思います(将来的に必要になるかもしれませんが、ネストはありません):

import csv
import json

f = open( 'sample.csv', 'r' )
reader = csv.DictReader( f, fieldnames = ( "id","name","lat","lng" ) )
out = json.dumps( [ row for row in reader ] )
print out

素晴らしく、シンプルで、うまくいきます。しかし、.csv ファイルは取得できませんが、コピーして貼り付けると 1 行のテキスト出力になります。

読み取り可能で、理想的には .json ファイルに保存される .json が必要です。これは可能ですか?

4

3 に答える 3

3

より読みやすい JSON を取得するには、次のindent引数を試してdumps()ください。

print json.dumps(..., indent=4)

ただし、元の CSV ファイルのように見せるには、各行を個別にエンコードしてから、JSON 配列構文を使用してそれらをすべて結合する必要があります。

out = "[\n\t" + ",\n\t".join([json.dumps(row) for row in reader]) + "\n]"

それはあなたに次のようなものを与えるはずです:

[
    {"id": 1, "name": "foo", ...},
    {"id": 2, "name": "bar", ...},
    ...
]

結果をファイルに書き込む方法についてサポートが必要な場合は、このチュートリアルを試してください。

于 2012-10-18T09:32:18.397 に答える
1

JSON ファイルのより読みやすい形式が必要な場合は、次のように使用します。

json.dump(output_value, open('filename','w'), indent=4, sort_keys=False)
于 2013-05-09T13:50:36.143 に答える
1

Here's a full script. This script uses the comma-separated values of the first line as the keys for the JSON output. The output JSON file will be automatically created or overwritten using the same file name as the input CSV file name just with the .csv file extension replaced with .json.

Example CSV file:

id,longitude,latitude
1,32.774,-124.401
2,32.748,-124.424
4,32.800,-124.427
5,32.771,-124.433

Python script:

csvfile = open('sample.csv', 'r')
jsonfile = open('sample.csv'.replace('.csv', '.json'), 'w')

jsonfile.write('{"' + 'sample.csv'.replace('.csv', '') + '": [\n') # Write JSON parent of data list
fieldnames = csvfile.readline().replace('\n','').split(',')        # Get fieldnames from first line of csv
num_lines = sum(1 for line in open('sample.csv')) - 1              # Count total lines in csv minus header row

reader = csv.DictReader(csvfile, fieldnames)
i = 0
for row in reader:
  i += 1
  json.dump(row, jsonfile)
  if i < num_lines:
    jsonfile.write(',')
  jsonfile.write('\n')
jsonfile.write(']}')
于 2014-07-12T20:26:46.510 に答える