Jacasriptillä tietojen parsiminen

parsi harju

Eli kuinka javascriptillä tulisi parsio tietoja txt tiedostosta siten, että saadaan poimittua vain tietty tietopätkä ja esitettyä se halutussa yhteydessä. Esimerkki parsittavan tekstitiedoston sisällöstä, 2 rivinen tiedosto:

26.05.14 21:48:28 4.8 92 3.6 2.3 2.3 45 0.0 10.9 1063.4 NE 2 m/s C mb mm 269.3 0.6 42.2 78.5 2.6 20.1 45 2.6 -0.4 16.4 00:00 4.7 21:44 9.5 21:13 9.5 21:13 1063.5 21:46 1055.3 04:23 1.9.2 1032 8.2 4.8 4.8 0 0 0 43 0.0 -1 1 0 NE 149 m 1.8 0.0 32 0

Toinen rivi alkaa tuosta 21:46 1055 lähtien...

Jos tuolta haluaisin poimia esim tuulensuunnan NE, sekä nopeuden 2 m/s, niin miten tuo tulisi parsia jotta sen voisi järkevästi esittää html5 sivun yhteydessä? Käytännössä täytyy tietää toki mikä arvo vastaa mitäkin ja esimerkissäkin täytyy ehkä poimia 3 tekijää, suunta, nopeus sekä nopeuden yksikkö ja esittää nämä 3 sitten halutussa järjestyksessä / muoodossa..

Mutta miten ylipääään parsitaan oikeaoppisesti, saatika että voisi poimia jonkin tietyn arvon yhdestä raakadata tekstitiedostosta?

Tiedoista & vinkeistä kiittäen!

10

312

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • JSON

      Helpottaisi kovasti, jos data olisi saatavissa JSON- tai XML-muodossa.

      • parsi harju

        Näitäkin muotoja täytyy vielä käsitellä mutta se tulee eteen hieman tuonnempana.. Olisiko sulla heittää jotain hyvää opaslikkiä kumpaiseenkin? Google toki löytää, ongelmana vain erottaa joukosta hyväksi todetut, helposti ymmärrettävät joista jotain oppiikin pelkän kopioinnin sijaan..

        Kiitos kuitenkin jo tähänastisista!


    • Retaattori

      Esimerkiksi tekemällä tekstistä array ja poimimalla sieltä oikeat indexsit, huom indexsien laskenta lähtee 0 arvosta.
      var txt='26.05.14 21:48:28 4.8 92 3.6 2.3 2.3 45 0.0 10.9 1063.4 NE 2 m/s ';
      var a=txt.split(" ");
      var sn=a[11] ' ' a[12] a[13];
      document.getElementById("tuuli").innerHTML = sn;

      • parsi harju

        Kiitos vastauksesta!

        En halua teettää valmiiksi pätkää toisilla, joten kysyisin vielä tuosta index asiasta ym. Olisiko sulla muuten heittää jotain linkkiä asiaa selkokiielisesti käsittelevään oppaaseen tms? Joka tapauksessa, voidaanko nuo arvot kuvitella ikäänkuin olisivat taulukkolaskennan soluja, eli tuo 26.05. olisi index 0, 14 olisi index 1 jne? Entä miten poikkeaa kun vaihtuu rivi, vai jatkuuko index laskenta eteenpäin normaalisti?

        Olen tässä asiassa jokseenkin ummikko, mutta pyrin sisäistämään nopeasti perusasioita, kiitos siis jo tähänastisista? :)


    • JSON

      // Data merkkijonona
      var data = "26.05.14 21:48:28 4.8 92 3.6 2.3 2.3 45 0.0 10.9 1063.4 NE 2 m/s";

      // Tehdään datasta taulukko
      data = data.split(' ');

      // Taulukko on nyt seuraavan näköinen:
      ["26.05.14", "21:48:28", "4.8", "92", "3.6", "2.3", "2.3", "45", "0.0", "10.9", "1063.4", "NE", "2", "m/s"]

      // Jos halutaan ensimmäinen taulukon kohta:
      var eka = data[0];

      // Jos taas toinen:
      var toka = data[1];

      // jne.
      // Rivinvaihdossa taulukko jatkuu normaalisti.
      // Onko rivien tärkeä erottua toisistaan?

      • parsi harju

        Kiitos!

        Tuo toki kommenttina koodissa, mutta oletan että myös kysymykseksi tarkoitettu, joten.. Rivien ei ole tärkeää erottua. Tulostus olisi tarkoitus tehdä html sivulle "taulukkoon", tai ihan tekstimääritteen perään. Eli esim Lämpötila: ja påoimia parsitusta datasta arvo perään.. Liittyy oikeastaan seuraavaan, mutta tavallaan molempiin..

        jos & kun tiedot poimitaan tyyliin

        data.data[0] // (meniköhän jo väärin),

        niin mikä on oikeaoppinen tapa poimia tuo tuota käyttäen normi html:n sekaan, vaikka nyt tekstin perään / väliin jne, ei välttämättä taulukkomuotoisena (muotoiluasiat täytyy osata itse)?

        En ole tosiaan ehtinyt näitä vielä kokeilemaan käytännössä (vieläkin töissä), mutta jonkinverran tämä alkaa hahmottumaan. Viilaamista varmasti vaatii vielä paljon, mutta...

        KIITOS!


    • JSON

      // Kerrot, että sinun tarvitsee myöhemmässä vaiheessa mahdollisesti paria JSON-muotoista dataa. Tässä muutama on lyhyt esimerkki:

      // ESIM. 1

      // Kuvitellaan, että meillä on seuravanlaista JSON-dataa tallennettuna muuttujaan.
      var data = '{"nimi": "Keijo", "ika": 24, "osoite": "Koodikuja 17 B"}';

      // Tehdään tuosta merkkijonosta objekti
      data = JSON.parse(data);

      // Tiedot napataan näin:
      data.nimi // "Keijo"
      data.ika // 24
      data.osoite // "Koodikuja 17 B"

    • JSON

      ESIM. 2
      Meillä on seuraavanlainen JSON-data:

      {"ihmiset" : [
          {"nimi": "Keijo", "ika": 24, "osoite": "Koodikuja 17 B"},
          {"nimi": "Liisa", "ika": 32, "osoite": "Datatie 54"},
          {"nimi": "Matti", "ika": 22, "osoite": "Ohjelmoijankatu 16 F"}
      ]} 

      Kuvitellaan, että se on tallennettu muuttujaan data2.

      // Tehdään datasta objekti:
      data2 = JSON.parse(data2);

      // Käyttöesimerkkejä:

      // Noudetaan 1. henkilön osoite:
      data2[0].osoite

      // Noudetaan 2. henkilön nimi:
      data[1].nimi

      // Noudetaan 3. henkilön ikä:
      data[2].ika

      • JSON

        Käyttöesimerkit ovat väärin. Niiden pitäisi olla siis:

        // Noudetaan 1. henkilön osoite (eli "Koodikuja 17 B"):
        data2.ihmiset[0].osoite

        // Noudetaan 2. henkilön nimi (eli "Liisa"):
        data2.ihmiset[1].nimi

        // Noudetaan 3. henkilön ikä (eli 22):
        data2.ihmiset[2].ika


      • parsi harju
        JSON kirjoitti:

        Käyttöesimerkit ovat väärin. Niiden pitäisi olla siis:

        // Noudetaan 1. henkilön osoite (eli "Koodikuja 17 B"):
        data2.ihmiset[0].osoite

        // Noudetaan 2. henkilön nimi (eli "Liisa"):
        data2.ihmiset[1].nimi

        // Noudetaan 3. henkilön ikä (eli 22):
        data2.ihmiset[2].ika

        Kysyin jo yllä tähän svuten, joten jos siellä vastaus, tämän saa sivuttaa.. Mutta varuksi tähän tiivistettynä mitä hain takaa..

        Millainen koodinpätkä siis vaaditaan "keskelle leipätekstiä" tms. jos halutaankin poimia joku arvo väliin ja jatkaa siitä normaalisti eteenpäin?

        Tuosta jos vielä saisi esimerkin, olisin tavattoman kiitollinen.. Muutoin täytyy opiskella asioita itse eteenpäin.. Kiitos kaikille!


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. SDP jo 100 % suositumpi kuin persut

      Kertoo Hesarin uusin kannatuskysely. Demareiden kannatus on miltei tuplat verrattuna persuihinl. Suomen kansa ei selväst
      Maailman menoa
      115
      10773
    2. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      255
      4656
    3. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      177
      4021
    4. Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen

      No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat
      Maailman menoa
      177
      3513
    5. PS ylivoimainen nousija myös HS:n gallupissa, SDP laskee taas

      https://www.verkkouutiset.fi/a/hs-gallup-sdpn-suosio-laskee-ps-nousussa/#0a7d2507 Ylivoimainen viime kuukausien nousija
      Maailman menoa
      82
      3349
    6. Mikä tämä henkilö mahtaa touhuta Parkanossa

      Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58
      Parkano
      42
      3137
    7. Valtavasti suomalaisia asunnottomina, mutta ei yhtään somalia

      tai muuta kehitysmaalaista. Mites tässä näin kävi? Tiedän hyvin, että esim. somaleita lentää ulos mm. Hekan asunnoista,
      Maailman menoa
      79
      3126
    8. Ikävä sinua mies

      Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i
      Ikävä
      27
      2689
    9. Hienoa! Eduskunta luopui käteisen käytöstä

      Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.
      Maailman menoa
      68
      1831
    10. Kiinnostaa - ei kiinnosta - kiinnostaapas

      Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt
      Sinkut
      180
      1665
    Aihe