Python programozás json szótár

JSON fájl importálás Pythonban

Java, C, C#, PHP, Javascript alapokkal már ismerkedtem, de egyik sem volt képes arra, hogy a fejlesztés iránt kevésbé érdeklődő személyiségemet elcsábítsa. Azután jött a Python…

Nem vagyok Python fejlesztő, de ha egyedi megoldásokra van szükségem és nem lehet/nem tudom különböző programok kombójával megoldani, akkor előkerül a Python programnyelv, mint igazi segítség hobbi és kezdő programozóknak.

Legutóbb egy több tízezer soros text fájlból kellett kibogarásznom egy bizonyos karaktersort és megjeleníteni, hogy melyik sorokban található meg. Még szép, hogy írtam rá egy szkriptet.

A Pythonnak egyszerű, könnyen érthető a szintaktikája és a legfontosabb számomra, hogy nem kell “újra feltalálnom a kereket”, ha nem akarom. Ezerféle előre elkészített modul tölthető le hozzá.

Ennyit rólam. Vannak olyan programkódok, amik mások számára is hasznosak lehetnek.

A feladat:

Olvass be egy JSON szótárat Pythonban, majd a beírt kulcsszó alapján a rendszer írja ki a hozzá tartozó magyarázatot. Értelmező kéziszótár fadapos, konzolos változatban. 🙂

Kifejezetten jó arra, hogy bemutassa a szótár (dictionary) adattípus használatát és a JSON importálást.

Egyszerű szótár készítése Python nyelven

JSON importálás és szótár Python programozás

A fenti képen látható, hogyan néz ki a forráskód. A konzol kér egy szót, majd a rendszer megkeresi a JSON fájlban található szóhoz tartozó magyarázatot és kiírja nekünk. Nem szeretném minden sorát részletezni, ezért kiemeltem az “érdekesebbeket”.

difflib Python modul

from difflib import get_close_matches

A difflib python modul nagyon hasznos, ha sztringek összehasonlításáról van szó, ebből most a get_close_matches függvényre volt szükség, ami pontosan azt adja vissza, ami a neve. A sztringhez legjobban hasonlító sztringeket.

JSON fájl importálása Python programban

Ahogy a bejegyzésem bevezetőjében írtam, a Pythonban nem kell feltalálni újra a kereket. A közösség és a fejlesztők a lehető legegyszerűbb, kézenfekvő megoldásokra törekszenek. Így a JSON fájltípus importálása is megoldható mindössze 2 sor segítségével.

import json
data = json.load( open("dictionary.json") )

Az első sorral meghívjuk a json modult, a második sorban pedig egyszerűen megnyitjuk a szükséges fájlt és elmentjük egy változóban, aminek a típusa:

<class 'dict'>

Azaz Python dictionary, amiről részletesebben itt olvashatsz: Python Dictionaries

A dictionary lényegében kulcsokat és hozzájuk tartozó értékeket tartalmaz. Ha beírod a konzolban, hogy “Ló”, akkor kiírja a JSON fájlban található értéket, ami a “Ló” kulcshoz tartozik.

Nézzünk meg néhány sort a kódból.

Tulajdonnevek felismerése

elif innerWord.title() in data:
     return data[ innerWord.title() ]

Ez a két sor arra szolgál, hogyha a szó elején található nagybetű helyett kisbetűt írunk, akkor ezt a program ismerje fel magától.

Nagybetűs mozaikszavak és rövidítések felismerése

elif innerWord.upper() in data:
     return data[ innerWord.upper() ]

Ha a szó teljesen nagybetűkből áll, mint a USA, de mi kisbetűvel írtuk, akkor a program ezt felismeri.

Kapcsolódó kifejezés automatikus felajánlása

Ismerős a Google keresésből, amikor elütünk egy betűt és felajánlja a javított kifejezést? Ez a néhány sor ugyanezt csinálja.

Ha létezik az elírásunkhoz hasonló szó vagy kifejezés, akkor felajánlja a lehetőségét annak, hogy a legjobban hasonlító szóhoz tartozó jelentést írja ki.

elif len( get_close_matches(innerWord, data.keys()) ) > 0:
   WordCloser = get_close_matches( innerWord, data.keys() )[0]
    chooser1 = input("Did you mean " + WordCloser + "? If yes, then type 'Y' or then type 'N'\n")
    if chooser1 == "Y":
         return data[get_close_matches( innerWord, data.keys() )[0]]
    else:
         return "Please try again."

Típuskonverzióból fakadó megjelenítési hiba megoldása

Előfordul, hogy bizonyos esetekben kimenetként karakterenként írja ki nekünk a választ a program. Az alábbi kódsor ezt a problémát hivatott javítani.

output = translate( my_word )
if type( output ) == list:
    for item in output:
        print( item )
else:
    print( output )

Összefoglalás

Ha hasznodra vált a kód vagy egy részlete, akkor írj nekem egy “köszi”-t hozzászólásban (és használd fel nyugodtan).

Tetszett a bejegyzés? Oszd meg az ismerőseiddel! Szólj hozzá!
  •  
  •  
  •   
  •  

A szerzőről

A cikk szerzője online marketing és IT ismereteinek kombinálásával, egyedi látásmódjával segít vállalkozóknak és szervezeteknek bevételeik növelésében. Nem ismer lehetetlent, szereti a változatosságot. Szabadidejében kutyákkal játszik, sportol vagy a barátnőjével van.

Vélemény, hozzászólás?