Sada je: 28 ožu 2024, 09:09.
C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Bok!

Zapeo sam na jednom problemu u Python jeziku pa bih molio za pomoć.

Ovo je izgled XML datoteke

<GradIme>RC Bilogora</GradIme>
<Lat>45.884</Lat>
<Lon>17.200 </Lon>
<Podatci>
<Temp> 4.4</Temp>
<Vlaga>67</Vlaga>
<Tlak>1021.7</Tlak>
<TlakTend>+0.9</TlakTend>
<VjetarSmjer>NW</VjetarSmjer>
<VjetarBrzina> 4.4</VjetarBrzina>
<Vrijeme>pretežno vedro</Vrijeme>
<VrijemeZnak>2</VrijemeZnak>
</Podatci>
</Grad>


Datoteka se dalje nastavlja sa jednakog izgleda za svaku glavnu meteorlokšku postaju u Hrvatskoj.

Ja želim složiti Python skriptu u kojoj bih odabrao grad (padajuća lista ili upis ovisno o tome ima li GUI ili ne), a skripta bi mi onda u lako čitljivom obliku izbacila informacije ovremenu za odabranu postaju/grad. Problem je što ne razumijem dobro tutorijale koji govore o radu sa XML datotekama u Pythonu pa bih molio nekoga tko ima iskustva da bi složi primjer koji bih mogao koristiti u daljnjoj izradi skripte.

Znači, želio bih da skripta ima otprilike ovakav output (za navedeni primjer):

Postaja: RC Bilogora
Temperatura zraka: 4.4°C
Relativna vlaga zraka: 67%
Tlak zraka: 1021.7 hPa
Vjetar: NW 4.4 m/s
Linux za srce i dušu.

GitHub
Twitch
YouTube
Avatar
Postovi: 42
Postovi: 42
Pridružen/a: 09 ožu 2020, 19:12
Lokacija: Zagreb
Podijelio/la zahvalu: 2 puta
Primio/la zahvalu: 1 puta
Spol: M
Datoteku s podacima nazvao sam meteoPostaje.xml.
U primjeru koji si postavio nedostaje početni tag za grad.
Prva linija morala bi bit <Grad>.

Kod: Označi sve
import xml.etree.ElementTree as ET

l = {
  "GradIme" : ("Postaja:", ""),
  "Temp" : ("Temperatura:", "°C\n"),
  "Vlaga" :  ("Relativna vlaga zraka:", "%\n"),
  "Tlak" : ("Tlak zraka:", " hPa\n"),
  "VjetarSmjer" : ("Vjetar:", ""),
  "VjetarBrzina" : ("", " m/s\n")
}

tree = ET.parse('meteoPostaje.xml')
root = tree.getroot()

for g in root:
  if g.tag in l:
    print(l[g.tag][0], g.text, l[g.tag][1])
  if g.tag == 'Podatci':
      for p in g:
        if p.tag in l:
          print(l[p.tag][0], p.text + l[p.tag][1],end = "")
Postovi: 4
Postovi: 4
Pridružen/a: 21 pro 2021, 07:09
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: debian, dwm

Na mreži
Trenutno korisnika/ca: / i 4 gostiju.