YAML yra santrumpa iš Yet Another Markup Language arba YAML nėra žymėjimo kalba, kuri yra duomenų formatas, naudojamas keistis duomenimis. YAML gali saugoti tik duomenis ir jokių komandų. Jis panašus į XML ir JSON duomenų formatus. Šiame straipsnyje kartu su pavyzdžiu pasinersime į YAML failų analizavimo Python koncepciją.
YAML failų analizė Python
PyYAML Python programavimo modulis laikomas Python analizatoriumi. Naudodamiesi šia biblioteka, galime atlikti įvairias YAML failų operacijas, pvz., skaityti ar rašyti YAML failus. Serializavimas ir nuolatiniai YAML duomenys taip pat gali būti atliekami naudojant šį PyYAML modulį Python.
Norėdami naudoti PyYAML modulį, turime jį įdiegti Python vykdydami žemiau esančią komandą:
pip install pyyaml>
YAML failai išsaugomi naudojant 2 skirtingus plėtinius, tai yra, .yaml ir .yml . Kadangi mums reikia išanalizuoti YAML failą, sukūrėme du YAML failus, kuriuos sudaro duomenys Raktas: vertė pora. Savo straipsnio pavyzdžiu paimsime šiuos YAML failus.
geeksforgeek.yml
UserName: techcodeview.com Password: GFG@123 Phone: 1234567890 Website: techcodeview.com Skills: -Python -SQL -Django -Javascript>
multi_docs.yml
--- UserName: techcodeview.com Password: GFG@123 Phone: 1234567890 Website: techcodeview.com Skills: -Python -SQL -Django -Javascript ... --- UserName: Google Password: google@123 Phone: 1234567890 Website: google.com Skills: -Python -SQL -Django -Javascript ... --- UserName: Yahoo Password: yahoo@123 Phone: 1234567890 Website: yahoo.com Skills: -Python -SQL -Django -Javascript>
Dabar pažiūrėkime kelis metodus, kuriais galime išanalizuoti YAML failą Python.
Naudojant funkciją load()
YAML modulio funkcija yaml.load() naudojama YAML duomenims arba objektui nuskaityti į Python žodynas . Gali būti YAML duomenų, kuriuos sudaro daugybė raktų ir reikšmių porų (konfigūracijos failų), todėl norint nuskaityti šiuos failus, funkcija load() gali būti naudinga, nes ji atlieka YAML duomenų deserializavimą į Python. The Krautuvas funkcijos load() parametras nustatytas į SafeLoader , kuri ketina saugiai įkelti YAML duomenis. Tai naudinga tais atvejais, kai įvestis paimama iš nepatikimų šaltinių.
Python3
skirtumas tarp $ ir $ $
import> yaml> with>open>(>'geeksforgeeks.yml'>,>'r'>) as f:> >data>=> yaml.load(f, Loader>=>yaml.SafeLoader)> > # Print the values as a dictionary> print>(data)> |
>
>
Išvestis:
{'UserName': 'techcodeview.com', 'Password': 'GFG@123', 'Phone': 1234567890, 'Website': 'techcodeview.com> Naudojant full_load() funkciją
Funkcija yaml.full_load() naudojama YAML failo turiniui analizuoti raktų ir reikšmių porų pavidalu. Tada naudokite Python gauti () metodą, galime gauti konkrečius duomenis iš YAML failo.
Python3
import> yaml> with>open>(>'geeksforgeeks.yml'>,>'r'>) as f:> >data>=> yaml.full_load(f)> > # Print the values as a dictionary> output>=> {> >'UserName'>: data.get(>'UserName'>),> >'Password'>: data.get(>'Password'>),> >'phone'>: data.get(>'Phone'>),> >'Skills'>:>' '>.join(data.get(>'Skills'>, []))> }> print>(output)> |
>
>
Išvestis:
{'UserName': 'techcodeview.com', 'Password': 'GFG@123', 'phone': 1234567890, 'Skills': '- P y t h o n - S Q L - D j a n g o - J a v a s c r i p t'}> Naudojant funkciją safe_load()
Kitas būdas įkelti YAML failą į Python yra naudoti safe_load() metodą. Jis gali būti naudojamas vietoje load() metodo SafeLoader parametro, kai duomenys įkeliami iš nepatikimo šaltinio.
Python3
lapė prieš vilką
import> yaml> with>open>(>'geeksforgeeks.yml'>) as f:> >dict> => yaml.safe_load(f)> >print>(>dict>)> |
>
>
Išvestis:
{'UserName': 'techcodeview.com', 'Password': 'GFG@123 *', 'phone': 987909890, 'website': 'techcodeview.com 'Skills': '-Python -SQL -Django -Rest Framework -JavaScript'}> Naudojant funkciją load_all()
Metodas load_all() naudojamas, kai norime įkelti YAML dokumentą, esantį viename faile. The Krautuvas funkcijos load() parametras nustatytas į SafeLoader , kuri ketina saugiai įkelti YAML duomenis. Tai naudinga tais atvejais, kai įvestis paimama iš nepatikimų šaltinių.
Python3
import> yaml> from> yaml.loader>import> SafeLoader> # open yaml file in read> with>open>(>'multiple_documents.yml'>,>'r'>) as f:> >yaml_data>=> list>(yaml.load_all(f, Loader>=>SafeLoader))> >print>(yaml_data)> |
>
>
Išvestis:
[{'UserName': 'techcodeview.com', 'Password': 'GFG@123', 'Phone': 1234567890, 'Website': 'techcodeview.com {'UserName': 'Google', 'Password': 'google@123', 'Phone': 1234567890, 'Website': 'google.com', 'Skills': '-Python -SQL -Django -Resst Framework -Javascript'}, {'UserName': 'Yahoo', 'Password': 'yahoo@123', 'Phone': 1234567890, 'Website': 'yahoo.com', 'Skills': '-Python -SQL -Django -Resst Framework -Javascript'}]>