2017-01-12 6 views
0

私は実行中のファントサーバーからjson文字列を取得する方法を理解していますが、以下の形式のテキストファイルを作成する必要があります。別の行。私はこれを行う方法を見つけるために全面的に調査してきました。助けが要る。私のファントサーバーからデータファイルを構築するためのJSONリクエストを行う

#!/usr/bin/env python 
import json,requests 
url = "http://192.168.250.55:8080/output/8Bl0DlDexPCpE21gZNads3ZJLpAx/latest.json" 
data = json.loads(requests.get(urlsoc).text) 
print data 

Here is the output from this: 

[{u'tempc': u'17.1500', u'altm': u'62.5088', u'tempf': u'62.8700', u'timestamp': u'2017-01-07T17:43:20.870Z', u'windspeedmph': u'0.0000', u'altf': u'205.0813', u'rainin': u'0.0000', u'wifion': u'0', u'humidity': u'27.0000', u'winddir': u'180', u'rainmm': u'0.0000', u'windspeedkmph': u'0.0000', u'voltage': u'3.9787', u'kilopascals': u'100.6010', u'dewptf': u'28.4106', u'soc': u'74.0547', u'dailyrainin': u'0.2750', u'dewptc': u'-1.9941'}] 

それでは、どのように私はこの情報が改行区切りのペアに変換し、それは次のようになりますので、ファイルに書き込むことができます。

TEMPC = 17.1500

ALTM = 62.5088 など....

答えて

0

data配列(キー、値のペア)の各要素のitemsを繰り返して、文字列の書式設定を使用して出力します。あなたはユニコードのデータは、そのエンドポイントから戻って来ている場合は

import json, requests 
url = 'https://data.sparkfun.com/output/9JKlQbq6YMIAVN2Yg6v6/latest.json' 
data = json.loads(requests.get(url).text) 
with open('outfile', 'w') as f: 
    for item in data: 
     for key, value in item.items(): 
      f.write('%s=%s' % (key, value,)) 
      f.write('\n') 

、あなたはcodecs.open代わりのopen使用することができます。


タイムスタンプフィールドの解析などを処理する。私は通常、あなたのコードで今すぐdateutil

pip install dateutil 

をお勧めします。

from dateutil import parser 

. . . 
with open('outfile', 'w') as f: 
    for item in data: 
     dt_timestamp = item.get('timestamp') 
     if dt_timestamp: 
      dt_timestamp = parser.parse(dt_timestamp) 
      # convert the python `datetime` however you would like 
      item['timestamp'] = dt_timestamp 
     for key, value in item.items(): 
      f.write('%s=%s' % (key, value,)) 
      f.write('\n') 
+0

恩赦自分の無知、私はかなりのnoobだけど、このコードを実行すると、キーが定義されていないと文句を言いエラーが発生します。このコードを各データペアに対して実行し、それに応じてキーの値を変更しますか? –

+0

@RobertMantel:上記のコードに誤字がありました。私はそれがより良く動作するように更新しました。 – 2ps

+0

更新していただきありがとうございます...まだこのエラーが発生しているようです:AttributeError: 'dict'オブジェクトに 'item'属性がありません。私はこのプライベート・ファント・サーバーを持っているので、テストするために自分のコードに変更することができます。https://data.sparkfun.com/output/9JKlQbq6YMIAVN2Yg6v6/latest.jsonまた、getのurlsocはちょうどurlです。 –

関連する問題