Pythonデータマイニング05-jsonフォーマット

2484 ワード

ウェブサイトの爬虫類の中で常にjsonデータを伝送して解析しなければならなくて、JSONの全称は“JavaScript Object Notation”で、意味はJavaScriptオブジェクトの表示法で、それは1種のテキストに基づいて、言語の軽級のデータの交換のフォーマットに独立します.XMLもデータ交換形式ですが、なぜXMLが選択されていませんか?XMLはクロスプラットフォームのデータ交換フォーマットとして利用できますが、JS(JavaScriptの略記)でXMLを処理するのは非常に不便です.同時にXMLマークはデータより多く、交換によって発生する流量を増加しました.JSONは付加されたマークがないので、JSONを選択してデータを交換する傾向があります.JSONには構造、オブジェクト、配列の2種類があります.オブジェクト構造は"{"大かっこで始まり、"}"大かっこで終了します.中間部分は0以上を「で区切った」key(キーワード)/value(値)ペアで構成され、キーワードと値の間は「で区切られ、構文構造はコードのように構成されている.
{
    key1:value1,
    key2:value2,
    ...
}
キーワードは文字列であり、値は文字列、数値、true、false、null、オブジェクトまたは配列でありうる.配列構造は「[]で始まり、"」で終了します.中間は0または複数の「以」で構成され、「区切られた値リスト」はコードのような構文構造である.
[
    {
        key1:value1,
        key2:value2 
    },
    {
         key3:value3,
         key4:value4   
    }
]
python 2.6バージョンはJSONモジュールに加入し始めました.pythonのjsonモジュールのプログレッシブとアンチプログレッシブのプロセスはそれぞれencodingとdecodingです.プログレッシブ(Serialization):オブジェクトの状態情報を、ネットワークを介して伝送可能なプロセスに変換し、伝送のフォーマットはJSON、XMLなどとすることができる.アンチプログレッシブとは、記憶領域(JSON,XML)から反プログレッシブオブジェクトの状態を読み出し、そのオブジェクトを再作成することです.jsonモジュールは四つの機能を提供します.dumps、dump、loads、load.
# dumps  
#                           
>>> import json
>>> data = ['aa', 'bb', 'cc']
>>> j_str = json.dumps(data)
>>> j_str
'["aa", "bb", "cc"]'
# loads  
#  json          python     
>>> j_str
'["aa", "bb", "cc"]'
>>> mes = json.loads(j_str)
>>> mes
['aa', 'bb', 'cc']
# dump  
#                           ,     
with open('D:/tmp.json', 'w') as f:
    json.dump(data, f)
# load  
#           ,  json         python     
with open('D:/tmp.json', 'r') as f:
    data = json.load(f)
リストを序列化するだけでなく、辞書やネストされた辞書を序列化することもできます.
#   
import json
dict1={'name1':['data11','data12'],'name2':['data21','data22']}
dict2={'name1':{'name11':['data11','data12']},'name2':['data21','data22']}
_json=json.dumps(dict1)
data2 =json.loads(_json)
print type(_json)
print type(data2)
print dict2['name1']['name11']
#     


['data11', 'data12']
参照リンク:JSON詳細python-Json Python処理JSON