Kirjoittaja Aihe: CSV-tiedostomuoto ?  (Luettu 2866 kertaa)

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
CSV-tiedostomuoto ?
« : 20.01.22 - klo:19.34 »
Kuinka oikeaoppisesti määritellään CSV-tiedostomuodossa yksinkertainen suora lainausmerkki ?

Libreoffice tekee muuttamalla lainausmerkin läheiseen vastaavan näköiseen lainausmerkkiin, mutta kuinka se tehdään oikeaoppisesti ?

... vai mennäänkö silloin epästandardiin muotoon ?

Itse ajatteleisin, että sen voisi merkitä kahdella eri tavalla:
Kahdella peräkkäisellä lainausmerkillä tai "\":llä ja sen perään lainausmerkillä. Ja jos haluaa \-merkin, niin laittaa niitä kaksi peräkkäin, niin parseri ymmärtää sen \-merkiksi.

Kumpikaan ei käsittääkseni ole standardin mukainen tapa, mutta onko standardissa siihen mahdollisuutta.

nm

  • Käyttäjä
  • Viestejä: 16424
    • Profiili
Vs: CSV-tiedostomuoto ?
« Vastaus #1 : 20.01.22 - klo:21.51 »
CSV-tiedostoille ei oikein ole mitään yleistä standardia, mutta kaksi peräkkäistä lainausmerkkiä on aika yleinen tapa koodata yksi lainausmerkki kentässä, joka on muuten lainausmerkkien sisällä. Muistaakseni ainakin Python tekee niin. Erikoista, jos LibreOffice Calc muuttaa lainausmerkin joksikin muuksi. Oletko varma, ettei se ollut jo syötteessä jokin muu kuin tavallinen lainausmerkki?

SuperOscar

  • Käyttäjä
  • Viestejä: 4060
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: CSV-tiedostomuoto ?
« Vastaus #2 : 20.01.22 - klo:22.50 »
Python tukee erilaisia CSV-murteita ja sitä voi parametroida tapauskohtaisestikin, mutta oletusmurteessa (”excel”):

  • erotinmerkkinä on pilkku (,)
  • merkkijonoja ei ympäröidä lainausmerkein, ellei se ole merkkijonon sisältämien merkkien takia välttämätöntä (esim. sisältää erotinmerkin)
  • puolilainausmerkkiä (') ei pidetä ongelmallisena merkkinä vaan se menee tiedostoon sinänsä
  • kokolainausmerkki (") kahdennetaan ja ympäröidään kokolainausmerkein, eli jos merkkijono on ", CSV-tiedostoon kirjoitetaan """".

Tämä on helppo kokeilla lisäämällä listamuuttujaan arvoja, joilla haluaa kokeilla, ja sitten kirjoittamalla nämä csv.writer()-metodilla tiedostoon:

Koodia: [Valitse]
with open('testi.csv', 'w') as outfile:
    writer = csv.writer(outfile, dialect='excel')
    writer.writerow(my_list)
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

kamara

  • Käyttäjä
  • Viestejä: 3028
    • Profiili
Vs: CSV-tiedostomuoto ?
« Vastaus #3 : 21.01.22 - klo:14.55 »
Python tukee erilaisia CSV-murteita ja sitä voi parametroida tapauskohtaisestikin, mutta oletusmurteessa (”excel”):

  • erotinmerkkinä on pilkku (,)
  • merkkijonoja ei ympäröidä lainausmerkein, ellei se ole merkkijonon sisältämien merkkien takia välttämätöntä (esim. sisältää erotinmerkin)
  • puolilainausmerkkiä (') ei pidetä ongelmallisena merkkinä vaan se menee tiedostoon sinänsä
  • kokolainausmerkki (") kahdennetaan ja ympäröidään kokolainausmerkein, eli jos merkkijono on ", CSV-tiedostoon kirjoitetaan """".

Tämä on helppo kokeilla lisäämällä listamuuttujaan arvoja, joilla haluaa kokeilla, ja sitten kirjoittamalla nämä csv.writer()-metodilla tiedostoon:

Koodia: [Valitse]
with open('testi.csv', 'w') as outfile:
    writer = csv.writer(outfile, dialect='excel')
    writer.writerow(my_list)

Kiitoksia vinkeistä, :) +++

Ohjelmoin juurikin pythonilla, joten oli ihan kiva, että mainostit valmista kirjastoa.

Sen lisäksi löysin netistä melko kyvykkään lukijakirjaston (pandas).

Ei näköjään kaikkea tarvitse tehdä itse. ;D