Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: .csv:n järjestäminen

Pumpernikkeli [04.02.2008 11:40:43]

#

Hei, eli ongelma olisi seuraavanlainen:

minulla on .csv tiedosto, jossa on kenttiä tähän malliin:

viikko;pvm;teksti
6;4/2/2008;tekstiä
6;5/2/2008;tekstiä
7;12/2/2008;tekstiä
2;5/1/2009;tekstiä

ongelma tulee siis siinä, että kun nuo pitäisi saada nousevaan järjestykseen ensin vuoden ja sitten viikon mukaan, mutta minulla ei näin aloittelijana ole hajuakaan, kuinka saisin tuolta rivin keskeltä otettua ensisijaisen lajitteluehdon.

Kenttien järjestyksen muuttaminenkaan ei oikein houkuttele, tulisi liikaa korjailtavaa kun nyt jälkiviisaana vasta tuon virheeni huomasin.

löysin jonkin "usort"- funktion, mutta lieneekö siitä apua, ja kuinka sitä käytetään?

.csv tiedosto ei ole mikään hirveän iso (muutama kt), eikä tule olemaankaan sen isompi, joten nopeudesta tuskin tarvitsee huolehtia

ajv [04.02.2008 12:23:11]

#

Tähän on 1000 ja 1 erilaista toteutustapaa. Ohessa muutama.

Tämän koodivinkin toisessa listauksessa on yksi tapa, mutta hieman yksinkertaisempi ratkaisu voisi olla:

1) Luet datan taulukkoon (file())
2) Käyt rivit läpi silmukalla ja muodostat toisen taulukon, jonka indeksinä toimii rivistä parsittu vuosi-viikko -kokonaisluku.
3) Järjestät toisen taulukon ksort()-funktiolla
4) Tulostat taulukon toisessa silmukassa.

Kaikkein yksinkertaisin ratkaisu olisi tosiaan, jos data olisi tiedostossa jo valmiiksi vuosi;viikko;muut -muodossa, jolloin voisit järjestää file():n palauttaman taulukon suoraan sort()-funktiolla.

tsuriga [04.02.2008 12:24:45]

#

Esim. list ja explode ovat ystäviäsi (kera mainitsemasi usortin). Tai tarjoo EDi niin postaan tuon omani :).

Pumpernikkeli [04.02.2008 12:40:21]

#

No joo... Ihan kelpo vinkkejä, mutta kun tuota koodiani tarpeeksi tuijottelin, niin päätinpä kuitenkin lähteä uudelleenjärjestelylinjalle, eli vuosi alkuun ja sillä homma hoitoon.

anteeksi turha kysely :)

Merri [04.02.2008 12:45:50]

#

Jep, kansainvälinen standardi YYYY-MM-DD on kätevin päivämäärämuoto, eli kannattaa myös käyttää nollia (eli tänään on 2008-02-04). Sorttii sitten oikein merkkijononakin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta