fixmint
FI

CSV-tiedoston siivous: tarkista ongelmat järjestyksessä

Kirjoittaja · · 5 min lukuaika

Sotkuisen CSV-viennin siivoamiseksi korjaa se kerroksittain: ensin merkit, sitten asettelu ja lopuksi se, mitä kukin sarake tarkoittaa. CSV on pelkkää tekstiä, joten useimmat ongelmat johtuvat vääristä merkeistä, ylimääräisistä riveistä tai erottimista tai arvoista, jotka ohjelma lukee eri tavalla kuin sinä. Korjaa merkit ensin. Piilotettu väli voi estää päivämäärän tunnistamisen päivämääräksi, ja myöhemmät korjaukset epäonnistuvat ilman selvää syytä.

CSV-siivoojaSotkuinen CSV, tyhjiä ja kopioitaTee se ilmaiseksi

Merkit, jotka näyttävät oikeilta mutta eivät ole

Ylimääräiset välilyönnit. Välilyönti solun alussa tai lopussa tai kaksi välilyöntiä arvon keskellä saa ”Berliini ” ja ”Berliini” näyttämään haussa, suodatuksessa tai liitoksessa kahdelta eri arvolta.

Näkymättömät merkit. Jotkin merkit eivät vie tilaa ruudulla:

  • Sidottu välilyönti (U+00A0) näyttää tavalliselta välilyönniltä, mutta on eri merkki. Verkkosivut käyttävät sitä pitämään sanat yhdessä.
  • Nollanleveyksinen välilyönti (U+200B) ei ole lainkaan leveä.
  • Tavujärjestysmerkki (U+FEFF) voi olla tiedoston aivan alussa ennen ensimmäistä otsikkoa. Sarake näyttää nimeltään ”id”, mutta onkin ”id”, joten haku ”id”:llä epäonnistuu.

Poista näkymättömät merkit näyttää, mitä se löytää, ennen kuin muuttaa mitään.

Rikkinäiset kirjaimet. ”é” siellä, missä odotat ”é”:tä, on koodausongelma nimeltä mojibake. Tiedosto tallennettiin UTF-8-muodossa, jossa é vie kaksi tavua, ja sitten luettiin Windows-1252-muodossa, jossa nuo kaksi tavua muuttuvat kahdeksi toisiinsa liittymättömäksi kirjaimeksi. Samalla tavalla heittomerkki ”’” muuttuu muotoon ”’”. Korjaus on lukea tiedosto UTF-8-muodossa tai viedä se uudelleen lähteestä valiten UTF-8. Jo väärin tallennetun tekstin korjaaminen on hankalaa, joten säilytä alkuperäinen ja työskentele kopiolla.

Asettelu: otsikkorivit, tyhjät rivit ja kaksoiskappaleet

Raportit alkavat usein otsikolla, päivämäärällä ja tyhjällä rivillä ennen varsinaista otsikkoriviä. Poista kaikki otsikkorivin yläpuolelta, niin ensimmäisellä rivillä ovat sarakkeiden nimet. Jokaisella sarakkeella tulee olla yksi nimi, eikä mikään nimi saa olla tyhjä.

Jokaisella rivillä pitäisi olla sama määrä kenttiä. Lainausmerkkien ulkopuolella oleva ylimääräinen pilkku arvon sisällä lisää kentän, ja jokainen sen jälkeinen arvo siirtyy yhden sarakkeen oikealle. Laske kentät rivi kerrallaan. Rivi, jonka määrä poikkeaa, on rikki.

Kaksoiskappaleita on kahta lajia. Rivit, jotka ovat identtisiä jokaisessa sarakkeessa, syntyvät yleensä, kun tiedot viedään tai liitetään kahdesti, ja ne voi turvallisesti poistaa. Rivit, joilla on sama avain mutta eroja muualla, voivat olla päivityksiä. Väärän poistaminen voi hävittää uusimman version, joten tarkista ne ensin.

Päivämäärät: 03/04/2026 voi tarkoittaa kahta eri päivää

03/04/2026 on yhdessä maassa 3. huhtikuuta ja toisessa 4. maaliskuuta, eikä teksti kerro, kumpi. Katso saman sarakkeen muita päivämääriä. Jos jokin ensimmäinen luku on yli 12, sarake on päivä edellä. Jos jokin toinen luku on yli 12, se on kuukausi edellä. Jos jokaisen arvon molemmat luvut ovat enintään 12, tiedosto ei kerro, ja silloin kysy lähdejärjestelmästä. Tietotyyppien tarkistin merkitsee tällaisen sarakkeen epäselväksi sen sijaan, että arvaisi.

Kun tiedät järjestyksen, muunna jokainen päivämäärä muotoon ISO 8601, eli vuosi-kuukausi-päivä, kuten 2026-04-03. Se on yksiselitteinen ja lajittuu oikein tekstinä. Muunna sekamuotoiset päivämäärät yksi kerrallaan, sillä useimmat ohjelmat lukevat sarakkeen, jossa on molempia tyylejä, epäjohdonmukaisesti.

Tekstinä tallennetut luvut

Luku on tallennettu tekstinä, kun siinä on valuuttamerkki, prosenttimerkki tai väli sen sisällä, kuten ”€ 12”, ”45%” tai ”1 234”, jossa on sidottu välilyönti. Tuhaterottimet, kuten ”1,234.50”, saavat usein ohjelman lukemaan arvon myös tekstinä. Taulukkolaskenta näyttää tekstiluvut vasemmalle tasattuina, ja summat ohittavat ne.

Desimaalierottimet ovat ansa. ”1.234,50”:ssa pilkku on desimaalierotin ja piste ryhmittelee tuhannet. ”1,234.50”:ssa on toisin päin. Siis ”1,234” voi olla 1234 yhdessä viennissä ja 1.234 toisessa. Selvitä lähteen lokaali ennen muuntamista, poista tuhaterottimet ja muuta desimaalipilkku pisteeksi.

Alkunollat katoavat

Postinumerot, tuotekoodit ja tilinumerot alkavat usein nollilla. Kun CSV avataan taulukkolaskennassa, ”01234” luetaan lukuna 1234 ja nollat katoavat. Tiedoston tallentaminen säilyttää menetyksen, joten lähdejärjestelmä on ainoa luotettava kopio.

Tunniste on teksti, vaikka se näyttää luvulta, koska sillä ei koskaan lasketa. Jätä lukumuunnos pois tällaisista sarakkeista, kun siivoat CSV-tiedoston, ja avaa tiedosto uudelleen lähteestä sen sijaan, että käyttäisit taulukkolaskennan tallentamaa kopiota. Tarkista jokaisen sarakkeen tietotyyppi jälkeenpäin, jotta postinumerosarake ei hiljaa vaihdu takaisin luvuiksi. Excel voi myös muuttaa arvoja avatessaan CSV:n, joten tarkista tulos pelkkänä tekstinä.

Tarkista tyypit ja profiloi sitten

Siivouksen jälkeen tarkista jokaisen sarakkeen tyyppi. Yksi ”N/A” hintasarakkeessa muuttaa koko sarakkeen tekstiksi, ja sen summa on silloin väärä. Tietotyyppien tarkistin antaa jokaiselle sarakkeelle tyypin ja luotettavuuspistemäärän ja listaa solut, jotka eivät sovi joukkoon.

Profiloi sitten sarakkeet. CSV-sarakeprofiloija näyttää aukot ja poikkeavat arvot kussakin sarakkeessa. Poikkeava arvo voi olla todellinen arvo tai virhe, kuten hinta, joka on tuhat kertaa suurempi kuin muut. Virhe johtuu usein väärään kohtaan osuneesta desimaalipisteestä tai erottimesta.

Erikoistapaukset

  • Rivinvaihdot lainausmerkeissä. Lainatussa arvossa voi olla rivinvaihto. Työkalu, joka jakaa tiedoston rivien mukaan, katkaisee rivin kahtia, joten käytä lukijaa, joka ymmärtää lainatut kentät.
  • Puolipistetiedostot. Monet eurooppalaiset taulukkolaskennat tallentavat CSV:n puolipisteillä, koska pilkku on desimaalierotin heidän lokaalissaan. Tarkista erotin ennen kuin luet sarakkeet.
  • Säilytä alkuperäinen. Kirjoita siivottu tulos uuteen tiedostoon ja säilytä vienti sellaisena kuin se tuli.

Järjestys tarkistuslistana

  1. Säilytä kopio alkuperäisestä viennistä.
  2. Poista ylimääräiset välilyönnit ja näkymättömät merkit. Korjaa rikkinäiset kirjaimet lähteessä, jos pystyt.
  3. Poista otsikkorivit, tarkista otsikkonimet ja varmista, että jokaisella rivillä on sama määrä kenttiä.
  4. Etsi kaksoiskappaleet ja päätä, mikä versio säilytetään.
  5. Muunna päivämäärät muotoon vuosi-kuukausi-päivä, poista erottimet ja tee tunnisteista tekstiä.
  6. Tarkista jokaisen sarakkeen tyyppi ja profiloi se aukkojen ja poikkeavien arvojen varalta.

Pikavastaukset

Miksi hakuni epäonnistuu, vaikka arvot näyttävät samoilta?

Yleensä jossakin solussa on välilyönti, sidottu välilyönti tai tavujärjestysmerkki. Poista näkymättömät merkit ja yritä uudelleen.

Miksi päivämääräni muuttuvat toisiksi?

Ohjelma luki päivän tai kuukauden edellä olevan päivämäärän väärässä järjestyksessä tai muutti tekstin omaan päivämuotoonsa. Muunna päivämäärät ensin itse muotoon vuosi-kuukausi-päivä.

Käännetty tekoälyn avulla: Englanninkielinen alkuperäisteos.

Kommentit

    Ei vielä kommentteja. Ole ensimmäinen.

    Arvosanasi (valinnainen)

    Sähköpostiosoitettasi ei näytetä eikä tallenneta.

    Kannen kuva: Open Data for AGI - Why Public, Free, and Open Datasets MatterOpen Data for AGI - Why Public, Free, and Open Datasets Matter

    Miksi julkiset, ilmaiset ja avoimet tietoaineistot muovaavat yleistä tekoälyä yhtä paljon kuin algoritmit ja laskentateho.

    $4.99Osta GumroadistaEnglanniksi