2017-05-16 3 views
-4

このコード で私はJSONファイルをパンダにロードしようとしましたが、このエラーは最初の行にあります。私もpd.read_jsonで試したので、同じことがjson構造で間違っていると思います。うまくいきませんでした。ここで何が間違っていますか?PythonでJsonファイルをロードしています

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-64-c050037c7cb9> in <module>() 
----> 1 data = json.loads(l) 
C:\Users\demighaa\AppData\Local\Continuum\Anaconda2\lib\json\__init__.pyc in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 

    337    parse_int is None and parse_float is None and 
    338    parse_constant is None and object_pairs_hook is None and not kw): 
--> 339   return _default_decoder.decode(s) 
    340  if cls is None: 
    341   cls = JSONDecoder 

C:\Users\demighaa\AppData\Local\Continuum\Anaconda2\lib\json\decoder.pyc in decode(self, s, _w) 
    362 
    363   """ 
--> 364   obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    365   end = _w(s, end).end() 
    366   if end != len(s): 

TypeError: expected string or buffer 

ファイルの最初の行は次のとおりです:

Name_file='data582750.txt' 
l=[] 
with open(Name_file) as f: 
    for line in f: 
     l.append(line) 
data = json.loads(l) 
json_normalize(data) 

が、私はこのエラーを取得

'{"Operator":0,"Device":"F0FCC","Time":1494854190,"FormattedTime":"2017-05-15 15:16:30 +0200 CEST","Data":"042911e3c78f2193262c58b2","JSONDecodedData":"{"Service":{"S":{"Typ":0,"Version":2,"Vdd":0},"Cpt":2,"Start":0},"ExtTemperature":[22.25,21.5,21.5,21.5,21.5,22],"Moisture":[50,50,49,49,49,50],"IntTemperature":[0,0,0,0,0,0,0,0,0]}","Snr":"48.21","ComputedLocation":{"Lat":0,"Lng":0},"LinkQuality":"EXCELLENT"}\n' 
+5

コードを画像として投稿しないでください - あなたの投稿に[MCVE]を入れて、人々が(テキストとして)コピーしてチェックして編集することができます。 – asongtoruin

+1

イメージを削除してテキストを追加するための小道具ですが、ヘルプを得るためにコードを正しくフォーマットするようにしてください。ここで何が起こっているのかを見るのは難しいです。 – samiles

+0

あなたの問題は判読できません...あなたはインデントを改善するためにあなたの投稿を編集する時間を取るべきです!自動インデントするための単なる単純なボタン '{}' ... – MTroy

答えて

0

はあなたの写真から判断json.loads(l[0])である必要がありますが... json.loads関数はstringを取りますまたはbufferを入力していますが、list

+0

ValueError:期待値、区切り文字:1行目154(char 153) –

2

...とにかく

をコードではなく、画像を投稿してください。私はを見ることができるものから、あなたはjsonlines fileを持っている - それぞれの行は、それ自体で明確なJSONオブジェクトの表現です。 json.loads()は、単一の文字列(単一のjsonオブジェクトを表す)を要求しますが、listではありません。だから、明白な解決策は、すなわち、全体ではなく、リストを渡すの場でJSONラインをデコードです:

data = [] 
with open("you/file.ext") as f: 
    for line in f: 
     data.append(json.loads(line)) 
json_normalize(data) 

編集:あなたのコメントあなたは jsonlinesファイルを持っていない可能性を与えられました。それが本当のjsonファイルの場合は、ファイル全体の内容をjson.loads()に渡すか、さらに単純にファイル自体をjson.load()に渡します。そして、世界中に好意を寄せてください。投稿前にその厄介なマニュアルを読むと、誰もが時間を節約できます: -/

+0

コードにこのエラーがあります。ValueError:区切り文字:1行目154(char 153) –

+0

良い答えが必要な場合は、良い質問を投稿してください:https://stackoverflow.com/help/mcve –

0

JSONデータに問題があるかもしれません! JSONバリデータを使用してデータを検証します。 jsonlintに日付をコピーして貼り付け、JSONが正しくフォーマットされているかどうかを確認するだけです。

関連する問題