python - شهادة - منتديات بايثون




تحليل القيم من ملف JSON؟ (5)

لدي JSON في ملف:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": [
        "id": "valore"
    ],
    "om_points": "value",
    "parameters": [
        "id": "valore"
    ]
}

كتبت هذا البرنامج النصي الذي يطبع كل نص json:

json_data=open(file_directory).read()

data = json.loads(json_data)
pprint(data)

كيف يمكنني تحليل الملف واستخراج القيم الفردية؟


أعتقد أن ما يقوله Ignacio هو أن ملف JSON الخاص بك غير صحيح. لديك [] متى يجب أن يكون لديك {} . [] للقوائم ، {} مخصصة للقواميس.

إليك كيفية ظهور ملف JSON ، ولن يتم تحميل ملف JSON لي:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": {
        "id": "valore"
    },
    "om_points": "value",
    "parameters": {
        "id": "valore"
    }
}

ثم يمكنك استخدام الرمز الخاص بك:

import json
from pprint import pprint

data = json.load(open('data.json'))

pprint(data)

باستخدام البيانات ، يمكنك الآن أيضًا العثور على قيم مثل:

data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]

جرب ذلك واكتشف ما إذا كان يبدأ في المعنى.


إذا كنت في الثعبان 3 هنا هو كيف يمكنك القيام بذلك

{
  "connection1": {
    "DSN": "con1",
    "UID": "abc",
    "PWD": "1234",
    "connection_string_python":"test1"
  }
  ,
  "connection2": {
    "DSN": "con2",
    "UID": "def",
    "PWD": "1234"
  }
}

يجب أن يبدو الرمز على افتراض أن ملف connection.json يبدو كما هو موضح أعلاه

connection_file = open('connection.json', 'r')
conn_string = json.load(connection_file)
conn_string['connection1']['connection_string_python'])
connection_file.close()
>>>test1

يجب أن تبدو data.json كالتالي:

{
 "maps":[
         {"id":"blabla","iscategorical":"0"},
         {"id":"blabla","iscategorical":"0"}
        ],
"masks":
         {"id":"valore"},
"om_points":"value",
"parameters":
         {"id":"valore"}
}

يجب أن يكون رمزك:

import json
from pprint import pprint

with open('data.json') as data_file:    
    data = json.load(data_file)
pprint(data)

لاحظ أن هذا لا يعمل إلا في Python 2.6 وما فوق ، لأنه يعتمد على with-statement . في Python 2.5 استخدم from __future__ import with_statement ، في Python <= 2.4 ، راجع إجابة Justin Peel ، والتي يستند إليها هذا الجواب.

يمكنك الآن أيضًا الوصول إلى قيم فردية مثل:

data["maps"][0]["id"]  # will return 'blabla'
data["masks"]["id"]    # will return 'valore'
data["om_points"]      # will return 'value'

يمكن أن يعالج "Ultra JSON" أو "ujson" ببساطة وجود [] في إدخال ملف JSON. إذا كنت تقرأ ملف إدخال JSON في برنامجك كقائمة من عناصر JSON ؛ مثل ، [{[{}]}, {}, [], etc...] ujson يمكن التعامل مع أي ترتيب تعسفي من قوائم القواميس وقواميس القوائم.

يمكنك العثور على ujson في فهرس حزمة Python وتتطابق واجهة برمجة التطبيقات تقريبًا مع مكتبة Python المضمنة في json .

ujson أيضًا أسرع بكثير إذا كنت تحمّل ملفات JSON أكبر حجمًا. يمكنك الاطلاع على تفاصيل الأداء مقارنةً بمكتبات Python JSON الأخرى في نفس الرابط المقدم.


data = []
with codecs.open('d:\output.txt','rU','utf-8') as f:
    for line in f:
       data.append(json.loads(line))




parsing