Pytonorm

Hur man söker efter data i JSON med python

Hur man söker efter data i JSON med python

En av de mest använda dataserialiseringsteknikerna är JSON-format. Python har en inbyggd modul JSON för att arbeta med JSON-data. Den stöder alla typer av primitiva datatyper som nummer, sträng, etc, tillsammans med python-objekt. Uppgifterna lagras i ett strukturerat format i JSON. Ibland krävs det att du söker efter en viss data från en stor JSON-sträng eller en JSON-fil. Det finns många sätt att söka efter specifik data från JSON-data. Hur JSON-data kan sökas baserat på nyckel eller värde med hjälp av python-skriptet visas i den här artikeln.

Exempel-1: Sök nyckel i enkla JSON-data

Följande skript visar hur man söker om en viss nyckel finns i en JSON-sträng eller inte. Här heter en variabel konsument data definieras för att lagra JSON-data. Värdet på nyckeln tas som inmatning från användaren. load () -metoden för JSON-modulen används för att ladda JSON-data i den variabel som heter kund. Nästa, 'i' används för att söka på nyckeln.

#!/ usr / bin / env python3
# Importera json-modul
importera json
# Definiera json-data
customerData = "" "
"id": "3425678",
"name": "John Micheal",
"email": "[email protected]",
"type": "normal",
"adress": "4258 Poplar Chase Lane, Boise, Idaho."
"" "
# Ange nyckelvärdet som du vill söka efter
keyVal = input ("Ange ett nyckelvärde: \ n")
# ladda json-data
kund = json.belastningar (kunddata)
# Sök efter nyckelvärdet med 'in' -operatören
om keyVal i kund:
# Skriv ut framgångsmeddelandet och värdet på nyckeln
skriv ut ("% s finns i JSON-data"% keyVal)
skriva ut ("Värdet på", keyVal, "är", kund [keyVal])
annan:
# Skriv ut meddelandet om värdet inte finns
skriv ut ("% s finns inte i JSON-data"% keyVal)

Produktion:

Manuset körs två gånger här. Ett befintligt nyckelvärde ges för första gången och ett icke-befintligt nyckelvärde ges för andra gången.

Exempel 2: Sök efter ett visst värde i JSON-data

Följande skript visar hur man söker efter ett visst värde i JSON-data. sökande variabel innehåller JSON-data där nyckeln används för att lagra sökandens namn och värde används för att lagra den sökande är närvarande eller frånvarande. Skriptet söker efter värdet 'Frånvarande' i JSON-data och skriver ut motsvarande namnvärde. för loop används här iterera JSON-data.

#!/ usr / bin / env python3
# Importera json-modul
importera json
# Definiera json-data
sökande = "" "
"Scott C Aldridge": "Present",
"Joe L Foss": "Present",
"Clyde M Gold": "Present",
"Monique C Doolittle": "Frånvarande",
"David M Volkert": "Present",
"Israel M Oneal": "Present",
"Elizabeth M Groff": "Frånvarande"
"" "
# Initiera en räknare
räknare = 0
# ladda upp json-data
appList = json.laster (sökande)
# itera json för att hitta listan över frånvarande sökande
för nyckel i appList:
if (appList [key] == 'Frånvarande'):
# Kontrollera räknaren och skriv ut meddelandet
om (räknare == 0):
tryck ("Följande sökande är frånvarande:")
skriva ut (nyckel)
räknare = räknare + 1
# Skriv ut meddelandet om ingen sökande är frånvarande
om (räknare == 0):
tryck ("Alla sökande är närvarande")

Produktion:

Enligt JSON-data från manuset är två sökande frånvarande. Detta blir den resulterande utdata efter att man kört skriptet:

Exempel 3: Sökvärde i JSON-arraydata med den anpassade funktionen

I följande skript heter en JSON-array jsondata är definierad. Här söks ett visst värde på en nyckel och om värdet existerar kommer värdet på en annan relaterad nyckel att skrivas ut som utdata. sökpris () funktionen definieras här ta värdet på namn nyckel som söks i JSON-data och den skriver ut värdet på motsvarande enhetspris nyckel-.

#!/ usr / bin / env python3
# Importera json-modul
importera json
# Definiera json-variabel
jsondata = "" "[

"name": "Pen",
"enhetspris": 5
,

"name": "Radergummi",
"enhetspris": 3
,

"name": "Pencil",
"enhetspris": 10
,

"name": "Vitbok",
"enhetspris": 15

] "" "
# ladda upp json-data
objekt = json.belastningar (jsondata)
# Mata in artikelnamnet som du vill söka efter
item = input ("Ange ett artikelnamn: \ n")
# Definiera en funktion för att söka efter objektet
def sökpris (namn):
för keyval i artiklar:
om namn.lägre () == keyval ['name'].lägre():
return keyval ['unit_price']
# Kontrollera returvärdet och skriv ut meddelandet
om (sökpris (objekt) != Ingen):
tryck ("Priset är:", sökpris (artikel))
annan:
skriva ut ("Artikel hittades inte")

Produktion:

Skriptet körs två gånger i denna utdata. ''penna' tas som värdet på namn nyckel som finns i JSON data. De enhetspris av 'penna' är 10 som är tryckt. Nästa, 'bok' tas som ett ingångsvärde som inte finns i JSON-data.

Exempel 4: Söknyckel i kapslade JSON-data

Följande skript visar steg för att söka värdet på en viss nyckel i den kapslade JSON-data. Här heter en kapslad JSON-variabel nestade data förklaras lagra kapslad data. Detta manus söker efter kvinnans klockas varumärke.

#!/ usr / bin / env python3
# Importera json-modul
importera json
# Definiera json-variabeln för kapslade data
nestedData = "" "
"Kolla på":
"män":
"brand": "Titan",
"pris": 200
,
"kvinnor":
"brand": "Citizen",
"pris": 250
,
"unge":
"brand": "Blancpain",
"pris": 100


"" "
# Ladda json-data
övervakningslista = json.belastningar (nestade data)
# Sök efter "märke" för kvinnor
if 'brand' in watchlist ['watch'] ['women']:
skriva ut (övervakningslista ['watch'] ['women'] ['brand'])

Produktion:

I ovanstående manus finns det bara ett märkesvärde för kvinnoklocka som är 'Medborgare''. Följande kommer att vara resultatet efter att skriptet har körts.

Exempel 5: Sök post från en JSON-fil med filtermetod och lambda

Följande steg visar hur du kan söka i posten från en JSON-fil baserat på en viss nyckel och värden. Innehållet i böcker.json filen ges nedan.

böcker.json

[

"isbn": "7799349885",
"name": "Essentials of Vehicle Dynamics",
"author": "Joop P. Pauwelussen "
,

"isbn": "7799349885",
"name": "Flöde och förbränning i kolvmotorer",
"author": "C. Arcoumanis och T. Kamimoto "
,

"isbn": "7799349885",
"name": "Interaktion med fordonsergonomi förare",
"author": "Nikolaos Gkikas"

]

Följande skript söker in posten från böcker.json fil, där värdet på författaren nyckeln är Nikolaos Gkikas använder sig av lambda och filtrera() metod.

#!/ usr / bin / env python3
# Importera JSON-modul
importera json
# Öppna den befintliga JSON-filen för laddning i en variabel
med öppna ('böcker.json ') som jsondata:
data = json.belastning (jsondata)
# Sök data baserat på nyckel och värde med filter- och listmetod
skriva ut (lista (filter (lambda x: x ["author"] == "Nikolaos Gkikas", data)))

Produktion:

Följande utdata visas efter körning av skriptet.

Slutsats:

När vi arbetar med en stor mängd JSON-data och behöver ta reda på specifik information från data med lätthet måste vi använda effektiva sätt att utföra uppgiften. Olika sätt att söka efter nyckel och värde i JSON-data förklaras i den här artikeln för att hjälpa pythonanvändare att utföra processen framgångsrikt.

Så här installerar du League Of Legends på Ubuntu 14.04
Om du gillar League of Legends är det här en möjlighet för dig att testa League of Legends. Observera att LOL stöds på PlayOnLinux om du är en Linux-a...
Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...
Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...