2017-12-06 21 views
-1

無効なJSONを持つファイルを作成するPythonスクリプトがあります。 このJSON-Fileを操作して、有効なJSONファイルになるようにしたいのですが、ファイルa '['の先頭と末尾a ']にすべてのオブジェクトの間にカンマを追加します。 JSON単独でこれを行う方法はありますか、または他の読み書き機能と一緒に方法を見つけなければなりませんか?JSONオブジェクトの末尾に( "、"、 "["] ")のような文字を追加するには

Exsample_File.json:

{ 
    "firstName": "Bidhan", 
    "lastName": "Chatterjee", 
    "age": 40, 
    "email":"[email protected]" 
    } 
    { 
    "firstName": "hanbid", 
    "lastName": "jeeChatter", 
    "age": 10, 
    "email":"[email protected]" 
    } 
    .... 
    n times 

New_File.json:

[ 
    { 
    "firstName": "Bidhan", 
    "lastName": "Chatterjee", 
    "age": 40, 
    "email":"[email protected]" 
    }, 
    { 
    "firstName": "hanbid", 
    "lastName": "jeeChatter", 
    "age": 10, 
    "email":"[email protected]" 
    }, 
    .... 
    n times 
    ] 

これは、このJSON-ファイルを作る機能です。私はstrが生成されている他のコードに触れたくありません。

data = json.loads(str) 
    with open('Example_File.json','ab')as outfile: 
     json.dump(data, outfile, indent=2) 

これまでのところ、この問題を解決するアイデアはありません。助けとなるコードサンプルはありません。

結果は新ファイルのよう

+0

から0を削除しました。正しい値で再定義できますか? –

+0

ファイルに有効な一連のJSONスニペットが含まれているようです。私はファイルを開き、ファイルの終わりに達するまでJSON構造体を繰り返し解析します。読み込み中の各データについて、書き戻してコンマを印刷する "、"必要な場所(大括弧で囲む) – coredump

+0

これらのファイルを生成するために使用したコードは何ですか?おそらくそれを最初に編集する方が簡単でしょう。それを編集したくない場合は、いくつかの正規表現を使用してそれぞれの "}"を見つけ、その後にコンマを置くことができます。 – George

答えて

0

N.このような何か、

import json 

with open('Example.json','r') as f: 
    data = f.read() 

data = "[" + data.replace("}", "},", data.count("}")-1) + "]" 
json_data = json.loads(data) 

は、あなたのデータは0から始まる番号を持っているようですので、あなたは例外「とValueError」になってしまったことがあります。あなたはWhy is JSON invalid if an integer begins with 0

ノートから問題を対処する方法を参照することがあります。私は手動で有効なJSON形式ではありません。この場合、example_file.jsonに「Example.json」

+0

それはそれです!それは超微細に作用します。私はちょうど追加:open( 'DumpedText.json'、 'w')out_fileとして: json.dump(json_data、out_file、インデント= 2)とそのパーフェクト。どうも! –

-1

でなければなりませんが、あなたが

words.replace('}','},') 

を行うことはできませんこれは

+0

質問は文字の追加についてですが、どのように新しい文字を追加するのでしょうか? – Sanket

+0

これはカンマを追加します。あなたは削除する必要がある最後のカンマがあり、角カッコを追加する必要があることに注意してください。 – AndreyF

0
'}' と '}' のすべてのインスタンスを置き換える必要があります

まず第一に、JSON配列として直接解析する方法はないと思います。あなたのJSONオブジェクトは、それらを解析する簡単な方法は、あなたの文字列を分割することでネストされていない場合 しかし、:

with open(YOUR_FILE) as jsons_file: 
    jsons = [x.strip() + '}' for x in jsons_file.read().split('}')][:-1] 

今あなたがjsonのライブラリーdumpまたはdumps

json.dumps(jsons) 
を使用してファイルや文字列にそれをダンプすることができますあなたは、文字列などのコンテンツを読んで、それを操作し、JSOとしてロードする必要があり

または

with open(OUT_FILE, 'w') as out_file: 
    json.dump(jsons, out_file) 
+0

私のファイルの例をtestetして、AttributeError: 'list'オブジェクトに属性 'split'がありません –

+0

read()の代わりにreadlines()をタイプしました – AndreyF

関連する問題