python একটি JSON ফাইল থেকে মান পার্সিং?




parsing (8)

"আল্ট্রা JSON" বা সহজভাবে "ইউজসন" আপনার JSON ফাইল ইনপুটতে [] পরিচালনা করতে পারে। যদি আপনি JSON উপাদানগুলির তালিকা হিসাবে আপনার প্রোগ্রামে একটি JSON ইনপুট ফাইল পড়েন তবে; যেমন, [{[{}]}, {}, [], etc...] ইউজসন অভিধানগুলির তালিকাগুলির অভিধানের কোনও ইচ্ছাকৃত ক্রম পরিচালনা করতে পারে।

আপনি পাইথন প্যাকেজ ইনডেক্সে ইউজসন খুঁজে পেতে পারেন এবং APIটি পাইথনের অন্তর্নির্মিত json লাইব্রেরির প্রায় অনুরূপ।

আপনি যদি বড় JSON ফাইল লোড করছেন তবে ইউজসন আরও দ্রুত। আপনি প্রদান করা একই লিঙ্ক অন্যান্য Python JSON লাইব্রেরি তুলনায় কর্মক্ষমতা বিবরণ দেখতে পারেন।

আমি একটি ফাইল এই JSON আছে:

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

আমি এই স্ক্রিপ্টটি লিখেছি যা জেসন টেক্সটটি ছাপিয়েছে:

json_data=open(file_directory).read()

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

আমি কিভাবে ফাইল পার্স এবং একক মান নিষ্কাশন করতে পারি?


আপনার 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)

উল্লেখ্য যে এটি শুধুমাত্র পাইথন 2.6 এবং তার মধ্যে কাজ করে, কারণ এটি স্ট্যাটাসের উপর নির্ভর করে। পাইথন 2.5 -এ from __future__ import with_statement পাইথন <= 2.4 ব্যবহার করুন, জাস্টিন পিলের উত্তরটি দেখুন , যা এই উত্তরটি উপর ভিত্তি করে।

আপনি এখন এই মত একক মান অ্যাক্সেস করতে পারেন:

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

যদি আপনি পাইথন 3 এ থাকেন তবে এখানে আপনি কীভাবে এটি করতে পারেন

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

Code.json ফাইল অনুমান মত কোড চেহারা ভালো হওয়া উচিত

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

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

   # Here you go with modified json file:
   # data.json file : 
    {
        "maps": [
            {
                "id": "blabla",
                "iscategorical": "0"
            },
            {
                "id": "blabla",
                "iscategorical": "0"
            }
        ],
        "masks": [{
            "id": "valore"
        }],
        "om_points": "value",
        "parameters": [{
            "id": "valore"
        }]
    }


   # You can call or print data on console by using below lines

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

    print(data_item['parameters'][0]['id'])

    #Output : 
    #pprint(data_item) output as :

    {'maps': [{'id': 'blabla', 'iscategorical': '0'},
              {'id': 'blabla', 'iscategorical': '0'}],
     'masks': [{'id': 'valore'}],
     'om_points': 'value',
     'parameters': [{'id': 'valore'}]}
    #print(data_item['parameters'][0]['id']) output as :
    valore

জাস্টিন পিলের উত্তরটি সত্যিই সহায়ক, তবে আপনি পাইথন 3 টি পড়ার জন্য JSON ব্যবহার করছেন:

with open('data.json', encoding='utf-8') as data_file:
    data = json.loads(data_file.read())

দ্রষ্টব্য: json.loads পরিবর্তে json.loads ব্যবহার করুন। পাইথন 3 এ, json.loads একটি স্ট্রিং প্যারামিটার নেয়। json.load একটি ফাইল-মত বস্তু পরামিতি লাগে। data_file.read() একটি স্ট্রিং বস্তু প্রদান করে।


একটি পাইথন 3 ব্যবহারকারী হিসাবে ,

load এবং loads পদ্ধতির মধ্যে পার্থক্য বিশেষ করে যখন আপনি ফাইল থেকে জসন ডেটা পড়েন।

ডক্সে বর্ণিত হিসাবে:

json.load:

এই রূপান্তর টেবিলের সাহায্যে একটি পাইথন বস্তুতে fp (a .read () - সমর্থনকারী টেক্সট ফাইল বা একটি JSON নথি ধারণকারী বাইনারি ফাইল) Deserialize করুন।

json.loads:

json.loads: এই রূপান্তর টেবিলটি ব্যবহার করে একটি পাইথন অবজেক্টে এস (একটি স্ট্র, বাইট বা বিটায়ারে ইনস্ট্যানশন একটি JSON নথি ধারণকারী) deserialize।

json.load পদ্ধতি বাইনারি ফাইলটি পড়তে সক্ষম হওয়ায় সরাসরি জোনন ডকুমেন্ট খোলা যেতে পারে।

with open('./recipes.json') as data:
  all_recipes = json.load(data)

ফলস্বরূপ, আপনার জson ডেটা এই রূপান্তর টেবিলের অনুসারে নির্দিষ্ট বিন্যাসে পাওয়া যায়:

https://docs.python.org/3.7/library/json.html#json-to-py-table


আমি মনে করি ইগনাসিও কি বলছে যে আপনার 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

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

pprint(data)

ডেটা দিয়ে, আপনি এখন এমন মানগুলিও খুঁজে পেতে পারেন:

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

যারা চেষ্টা করুন এবং এটি জ্ঞান করতে শুরু করে দেখুন।





parsing