Jak analizować JSON w Pythonie - proste kroki

Komentarze: 0

Parsowanie danych JSON przy użyciu Python | Proxy Seller Dowiedz się, jak analizować dane JSON w Pythonie. Uzyskaj instrukcje krok po kroku, aby skutecznie wyodrębniać i pracować z ustrukturyzowanymi danymi JSON w Pythonie. Jak analizować JSON w Pythonie - proste kroki

JSON to skrót od JavaScript Object Notation. Jest nie tylko lekki, ale także łatwy do odczytania i napisania dla ludzi. Podobnie, maszyny uważają go za łatwy do analizowania i generowania. Parsowanie jest kluczowe podczas pracy z treściami z API, plików konfiguracyjnych lub innych źródeł przechowywanych informacji dla każdego programisty Pythona. Ten artykuł przeprowadzi Cię przez podstawy parsowania JSON przy użyciu modułu Pythona, w tym jak używać json.dump python do zapisywania treści.

Zrozumienie JSON i jego struktury

Struktury JSON zawierają szczegóły w parach klucz-wartość. Oto podstawowy przykład obiektu:


{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"]
}

Ten przykład parsowania json w Pythonie zawiera typowe: ciąg znaków, liczbę, wartość logiczną i tablicę. Zapoznanie się z tą strukturą znacznie ułatwia pracę w Pythonie.

Interakcja z JSON w Pythonie

Implementacja Pythona umożliwia łatwe parsowanie ciągu json przy użyciu wbudowanego modułu Pythona. Moduł ten zawiera metody takie jak json.loads() do odczytu z ciągu znaków i json.load() do odczytu z pliku. I odwrotnie, json.dumps() i json.dump Pythona służą do zapisywania informacji odpowiednio w łańcuchu znaków i pliku.

Odczytywanie danych JSON

Przyjrzyjmy się, jak odczytywać dane JSON, które omówimy w następnej kolejności.

Odczytywanie JSON z ciągu znaków

Jeśli chcesz odczytać json w Pythonie, użyj json.loads(), aby przeanalizować ciąg znaków i przekonwertować go na obiekt Pythona:


import json

json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)

print(data)

Wyjście:

1.png

Wyodrębnianie JSON z pliku

Aby wyodrębnić informacje z pliku, użyj tej metody: json.load() i otwórz plik json w Pythonie:


import json

with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

Wyjście:

2.png

Zapisywanie danych JSON

Przed zapisaniem często trzeba odczytać lub załadować istniejące informacje - i właśnie w tym miejscu przydatna staje się metoda python load json file. Po prawidłowym załadowaniu informacji można nimi manipulować i zapisywać je w różnych formatach.

Zapisywanie JSON do ciągu znaków

Aby zapisać informacje w postaci ciągu znaków, użyj metody json.dumps Pythona:


import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

json_string = json.dumps(data)
print(json_string)

Wyjście:

3.png

Zapisywanie JSON do pliku

Aby zapisać szczegóły tego pliku, użyj metody json.dump Pythona:


import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

with open('data.json', 'w') as file:
    json.dump(data, file)

Zarządzanie zaawansowanym zagnieżdżonym JSON

Zagnieżdżone obiekty są powszechne podczas pracy z bardziej złożonymi strukturami informacji, które mogą z łatwością obsługiwać te zagnieżdżone struktury.


import json

nested_json_string = '''
{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"],
    "address": {
        "street": "123 Main St",
        "city": "Wonderland"
    }
}
'''

data = json.loads(nested_json_string)
print(data['address']['city'])

Wyjście:

4.png

Niestandardowy koder JSON

Język nie może automatycznie przekształcić wszystkich niestandardowych obiektów w JSON. W takich przypadkach konieczne będzie utworzenie niestandardowego kodera.


import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

class StudentEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Student):
            return obj.__dict__
        return super().default(obj)

student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)

Wyjście:

5.png

Niestandardowy dekoder JSON

Aby deserializować niestandardowe obiekty, należy zaimplementować niestandardowy dekoder, który wie, jak je obsługiwać.


import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

def student_decoder(dct):
    return Student(dct['name'], dct['age'], dct['is_student'])

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)

Wyjście:

6.png

Obsługa typowych problemów

Praca z danymi szczegółowymi może prowadzić do kilku typowych błędów, szczególnie podczas analizowania, generowania lub uzyskiwania dostępu do treści strukturalnych. Korzystanie z niezawodnego parsera python json może pomóc zidentyfikować i naprawić te problemy bardziej efektywnie. Oto niektóre z najczęstszych z nich:

Nieprawidłowy format JSON

Częstym błędem podczas analizowania pliku json jest napotkanie nieprawidłowego formatu. Wymaga on podwójnych cudzysłowów wokół kluczy i wartości łańcuchowych oraz prawidłowego zagnieżdżenia nawiasów i nawiasów klamrowych.


import json

invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
    data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
    print(f"Invalid JSON format: {e}")

Wyjście:

7.png

Obsługa brakujących kluczy

Czasami zawartość nie zawiera wszystkich oczekiwanych kluczy. Użycie metody get() pozwala bezpiecznie obsłużyć brakujące klucze, zwracając wartość domyślną zamiast zgłaszać błąd.


import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)

Debugowanie błędów parsowania JSON

Użyj modułu pdb, aby ustawić punkty przerwania i debugować kod parsowania.


import json
import pdb

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)

Praktyczny przykład obsługi JSON w web scrapingu

Web scraping zazwyczaj polega na pobieraniu treści z usług, które zwracają uzyskane informacje. Poniżej znajduje się przykład wykorzystujący bibliotekę żądań wraz z punktem końcowym https://httpbin.org/anything.

Zanim zaczniemy, sprawdź, czy zainstalowałeś pakiet żądań:


pip install requests

Podczas pracy z treścią strukturalną można użyć biblioteki requests, aby ułatwić sobie pracę. Wystarczy wysłać żądanie GET i adres URL za pomocą requests.get(url). Następnie można przeanalizować odpowiedź za pomocą response.json(). Stamtąd można łatwo uzyskać dostęp do określonych informacji, takich jak nagłówki, agent użytkownika, pochodzenie lub adres URL żądania i wydrukować je w razie potrzeby.

Kod zawiera silną obsługę błędów; przechwytuje json.JSONDecodeError, gdy wystąpi błąd dekodowania, oraz KeyError, gdy określony klucz jest nieobecny, co w konsekwencji zabezpiecza program przed awariami "braku danych". Taka solidność kodu pozwala mu zatem doskonale radzić sobie z rzeczywistymi zadaniami skrobania stron internetowych.


import requests
import json

url = 'https://httpbin.org/anything'

response = requests.get(url)

try:
    data = response.json()

    # Wyodrębnianie określonych danych z odpowiedzi JSON
    headers = data['headers']
    user_agent = headers.get('User-Agent', 'N/A')
    origin = data.get('origin', 'N/A')
    url = data.get('url', 'N/A')

    print(f"User Agent: {user_agent}")
    print(f"Origin: {origin}")
    print(f"URL: {url}")

except json.JSONDecodeError:
    print("Error decoding JSON response")

except KeyError as e:
    print(f"Key error: {e} not found in the JSON response")

8.png

Każdy programista musi wiedzieć, jak analizować plik json w Pythonie. Dzięki modułowi i najlepszemu sposobowi jego wykonania, które zostały przedstawione w tym podręczniku, będziesz w stanie odczytywać, zapisywać i debugować wystarczająco szybko. Oznacza to regularne testowanie kodu i korzystanie z odpowiednich narzędzi i najnowszych funkcji w celu uzyskania lepszej wydajności. Ten przewodnik koncentruje się na analizowaniu danych json w Pythonie, aby pomóc ci skutecznie opanować te zadania.

Podczas skrobania stron internetowych parsowanie staje się niezbędne, ponieważ treści z internetowych interfejsów API często są dostarczane w tym formacie. Umiejętność przetwarzania i manipulowania nimi pozwala na skuteczne wydobywanie cennych informacji z różnych źródeł.

Wnioski

Parsowanie jest kluczową umiejętnością dla każdego programisty pracującego z interfejsami API sieci Web, plikami konfiguracyjnymi lub źródłami zewnętrznymi. Obsługa informacji - niezależnie od tego, czy chodzi o odczyt z ciągu znaków, pliku, zapisywanie ustrukturyzowanych danych wyjściowych, czy też radzenie sobie z zagnieżdżonymi i niestandardowymi obiektami - jest uproszczona dzięki wbudowanemu modułowi w Pythonie. Programiści mogą odblokować metody json.load(), json.loads(), json.dump(), json.dumps() Pythona i dowiedzieć się, jak radzić sobie z typowymi problemami, implementować niestandardowe kodery lub dekodery oraz tworzyć dostosowane aplikacje do interakcji informacji, które są solidne i niezawodne. Biorąc pod uwagę, że format ten jest standardem sieciowym do wymiany informacji, umiejętności te są cenne w skrobaniu, manipulowaniu treścią i integrowaniu wielu usług za pośrednictwem interfejsów API. Użycie prostego kodu Pythona do odczytu pliku json sprawia, że analizowanie pliku json w Pythonie jest dostępne dla każdego projektu, podczas gdy json.dump Python pozwala na efektywne zapisywanie materiału z powrotem.

Komentarze:

0 komentarze