Python'da JSON'u nasıl ayrıştıracağınızı mı merak ediyorsunuz? Yalnız değilsiniz. Bu kılavuz okuma, yazma ve ayrıştırmayı bir kod parçası haline getiriyor.
Bu hızlı kılavuzda, python'da ayrıştırmanın temellerini gözden geçiriyor, JSON'un ne olduğunu ve ihtiyacınız olan verileri elde etmek için her ikisini de nasıl kullanacağınızı açıklıyoruz.
Ayrıştırma nedir?
Ayrıştırma, bir karakter dizisini soyut bir sözdizimi ağacına dönüştürme işlemidir. Ayrıştırıcı daha sonra bu ağacı girdi üzerinde sözdizimsel doğruluğu kontrol etmek veya girdide herhangi bir hata olup olmadığını belirlemek gibi çeşitli işlemler gerçekleştirmek için kullanır.
En yaygın ayrıştırıcı türü lexer olarak adlandırılır ve karakter dizilerini token'lara (veya "lexemes") dönüştürür. Bir belirteç, diliniz için anlamı olan herhangi bir şey olabilir: bir tanımlayıcı, "hello" gibi gerçek bir dize veya hatta bir işlev çağrısı gibi daha karmaşık bir şey olabilir.
Tüm sözcükbirimleri belirteçlere dönüştürdükten sonra, programınız bunları işlediğinde ne olacağına karar vermeniz gerekir. Bu karar dilinizin nasıl çalıştığına bağlıdır. Bazı dillerde fonksiyon kavramı yoktur; diğerleri özyineleme ve üst düzey fonksiyonlar kullanabilir; diğerleri kapanışlar veya anonim ad alanları kullanabilir, vb.
Ayrıca, ayrıştırma sırasında yanlışlıkla sonsuz döngüler oluşturmamak için her bir belirtecin birden fazla karakter içermediğinden emin olmak isteyeceksiniz.
JSON nedir?
JavaScript Object Notation is a lightweight data-interchange format that describes objects – via attribute/value pairs – for data storage or transport. For example, let’s say you have a glossary on your website. JSON uses a string to define it. “title” : “example glossary”
JSON dosyalarının ana türleri nelerdir?
İki ana JSON dosyası türü vardır: nesne ve Dizi. Object her türlü veriyi depolamanın basit bir yoluyken, Array diğer nesneleri içeren nesneleri depolamak için kullanılır.
JSON kullanmanın faydaları nelerdir?
XML ya da CSV veya HTML gibi diğer formatlar yerine JSON kullanmanın temel avantajı, uygulamanızda herhangi bir özel ayrıştırma kodu hakkında endişelenmenize gerek olmamasıdır. JSON kullanırken, verilerinizi içeren dosyayı sayfanızda doğru yere eklemeniz ve ardından buradan okumanız gerekir. Bu, bir kişinin sitenizi görüntülemek için ne tür bir cihaz kullandığından bağımsız olarak, her zaman tam olarak ne almak istediğinizi alacağı anlamına gelir.
Python nedir?
Python, birçok farklı proje türü için kullanabileceğiniz genel amaçlı bir programlama dilidir. Öğrenmesi kolaydır ve hayatınızı kolaylaştırmak için çok sayıda kütüphaneye sahiptir.
Python ayrıca etrafında aktif bir topluluğa sahiptir, bu da başlamanıza yardımcı olacak çok sayıda çevrimiçi kaynak olduğu anlamına gelir.
İp nedir?
Dize, bir karakter dizisidir. Karakterler, harfler veya sayılar gibi sembollerdir. Yani, teknik olarak, bu cümle bir dizedir.
Ancak bilgisayarlar karakterleri ya da sembolleri okumazlar. Yalnızca 1 'leri ve 0 'ları okurlar - açık ve kapalı, ya da; başka bir deyişle - ikili.
Siz bilgisayar ekranında karakterleri görseniz de - perde arkasında - bilgisayarlar karakterleri 1'lere ve 0'lara dönüştürmekte ya da kodlamaktadır. Bu işlemin tersine (ikiliden karaktere) kod çözme denir.
Basitçe söylemek gerekirse, bir Python dizesi, insan komutlarını bilgisayarların anladığı ikili dile dönüştüren bir karakter dizisidir.
Python'da modüller nedir?
Modüller büyük programları yönetilebilir, organize edilmiş küçük dosyalara böler. Python'da, Python deyimlerini ve tanımlarını içeren dosyalara atıfta bulunurlar. Örneğin example.py gibi Python kodu içeren bir dosya bir modüldür. Modül adı 'example' olacaktır.
Python'da JSON nasıl ayrıştırılır.
JSON (JSON nesnesi içeren string veya dosya) ile çalışmak için Python'un JSON modülünü kullanabilirsiniz. Modülü kullanmadan önce içe aktarmanız size yardımcı olacaktır.
Json içe aktar
JSON modülü, JSON dizelerini ve JSON nesneleri içeren dosyaları ayrıştırmayı kolaylaştırır.
JSON nesne gösterimiyle (veya başka herhangi bir biçimde) biçimlendirilmiş bir dizeden aynı bilgileri ayrıştırmanın birçok yolu vardır.
En basit yol 'json' yerleşik fonksiyonunu kullanmaktır. Girdi verilerini ayrıştırırken ne kadar girinti kullanılacağını belirten 'indent' adlı isteğe bağlı bir parametre kabul eder.
None ise, girinti olmayacaktır. Aksi takdirde, her yeni kod satırından önce en az bir boşluk ekleyecektir.
Bu yaklaşım, bir değerler listesinden yalnızca bir değeri veya bir sözlük yapısından bir anahtar/değer çiftini çıkarmak istediğiniz basit durumlarda işe yarar.
Peki ya aynı yapıdan birden fazla değer çıkarmanız gerekiyorsa ya da bir JSON dizesini iç içe yapılar içeren bir Python sözlüğüne ayrıştırmak istiyorsanız? Bu gibi durumlarda, 'json.loads' yöntemini kullanmak daha iyidir.
json.loads yöntemi
import json
person = '{"name": "Steve", "languages": ["English", "French"]}'
person_dict = json.loads(person)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print( person_dict)
# Output: ['English', 'French']
print(person_dict['languages'])
Burada, 'person' bir JSON dizesidir ve person_dict bir sözlüktür.
Bu, girdi verilerindeki tüm anahtarları ve değerleri sözlükler olarak döndürür. Hiçbir anahtar yoksa, o anahtar/değer çifti için None döndürülür. Her bir anahtar/değer çiftiyle ilişkili değer, sözlük girdisine adıyla bakılarak belirlenir.
Python JSON dosyasını okuma
JSON nesnesi içeren bir dosyayı okumak için json.load yöntemini kullanabilirsiniz.
{"name": "Steve",
"languages": ["English", "French"]
}
Bu dosyayı şu şekilde ayrıştırabilirsiniz:
import json
with open('path_to_file/person.json', 'r') as f:
data = json.load(f)
# Output: {'name': 'Steve', 'languages': ['English', 'French']}
print(data)
Python'u JSON dizesine dönüştürme
json.dumps yöntemini kullanarak bir sözlüğü JSON dizesine dönüştürebilirsiniz.
import json
person_dict = {'name': 'Bob',
'age': 12,
'children': None
}
person_json = json.dumps(person_dict)
# Output: {"name": "Bob", "age": 12, "children": null}
print(person_json)
JSON'u bir dosyaya yazma
Python'da JSON'u bir dosyaya yazmak için json.dump() metodunu kullanabiliriz.
import json
person_dict = {"name": "Steve",
"languages": ["English", "French"],
"married": False,
"age": 33
}
with open('person.txt', 'w') as json_file:
json.dump(person_dict, json_file)
Yukarıdaki programda, 'w' kullanarak yazma modunda kişi.txt adlı bir dosya açtık. Eğer dosya zaten mevcut değilse, bir tane oluşturacaktır. Daha sonra, json.dump person_dict'i person.txt dosyasına kaydedilen bir JSON dizesine dönüştürür.
Programı çalıştırdığınızda, person.txt dosyasını oluşturur. Dosyanın içinde aşağıdaki metin vardır.
{"name": "Steve", "languages": ["English", "French"], "married": false, "age": 33}
Python Pretty Print JSON
JSON verilerini analiz etmek ve hata ayıklamak için daha okunabilir bir formatta yazdırmamız gerekebilir. Bunu json.dumps ve json.dump yöntemine indent ve sort_keys ek parametrelerini geçirerek yapabilirsiniz.
import json
person_string = '{"name": "Bob", "languages": "English", "numbers": [2, 1.6, null]}'
# Getting dictionary
person_dict = json.loads(person_string)
# Pretty Printing JSON string back
print(json.dumps(person_dict, indent = 4, sort_keys=True))
Programı çalıştırdığınızda, çıktı şöyle olacaktır:
{
"languages": "English",
"name": "Bob",
"numbers": [
2,
1.6,
null
]
}
Yukarıdaki programda, artan sırada sıralanan anahtarlarla girinti için dört boşluk kullandık.
Bu arada, indent'in varsayılan değeri None ve sort_keys'in varsayılan değeri False'dir.
Bu size biraz fazla geliyorsa, harika ve anlaşılması kolay bir Web Kazımaya Giriş kitabımız var. Sorunsuz bir veri toplama operasyonu sağlamak için aradığınız dönen konut proxy'leriyse, ayrıntılar için ekibimizle iletişime geçin veya kapsamlı aylık paketlerimizi keşfedin.
SSS
JSON'u kim yarattı?
Douglas Crockford tarafından 1999 yılında XML'e alternatif olarak oluşturulmuştur.
Sözdizimi ağacı nedir?
Bir sözdizimi ağacı, dil yapısını görsel olarak gösterir. Dili, genellikle bağlamı göz ardı ederek cümlenin parçalarına ayırır.
Python'da yerel bir JSON dosyası nasıl okunur?
Öncelikle json modülünü içe aktarın ve ardından open() fonksiyonu ile json dosyasının adını kullanarak dosyayı açın. Ardından, load() kullanarak json dosyasını okuyun ve json verilerini bir değişkene yerleştirin.