Apa metadata "sep =" yang dapat Anda tambahkan ke CSV?

24

Saat mencoba mencari tahu cara mendapatkan CSV agar terbuka dengan benar di Excel pada PC Spanyol (milik pelanggan), saya menemukan banyak jawaban yang merekomendasikan penggunaan sep=,di bagian atas file:

Di sisi lain, pendekatan ini berfungsi tetapi tidak ada jawaban yang memberikan informasi lebih lanjut tentang dari mana pilihan metadata ini berasal. Saya telah mencoba untuk mencari artinya (dan karenanya menemukan semua jawaban itu) tetapi belum dapat memperoleh informasi lebih lanjut terutama mengingat bahwa tanda baca sangat sulit untuk dicari.

Perhatian utama saya adalah apakah ini fitur khusus Excel atau tidak . Saya menduga itu tetapi tidak menemukan apa pun yang pasti untuk mengkonfirmasi.

Beberapa pertanyaan terkait adalah:

  • Karakter apa yang dapat digunakan dalam pengaturan ini?
  • Apa pengaturan lain yang tersedia (mis. Karakter terminasi baris, karakter kutipan, dll).
  • Apakah ada alat lain yang secara resmi mendukung fitur ini?

Saya berharap ada sepotong dokumentasi di suatu tempat di mana seseorang dapat mengarahkan saya ke yang akan menjawab semua pertanyaan ini dan banyak lagi; Aku hanya belum bisa menemukannya.

Beberapa klarifikasi:

Ini sep=bukan parameter untuk parser. Ini dimaksudkan untuk ditempatkan di dalam CSV. Contoh:

sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"
Burhan Ali
sumber
4
Ya, ini sangat spesifik .
Raystafarian
2
Apakah Anda bisa mendapatkan sesuatu tentang ini? Saya bingung dengan pertanyaan yang sama dan saya belum menemukan spesifikasi MS yang menjelaskan fitur ini. Jika fitur ini tidak didokumentasikan oleh MS, bagaimana sih bisa keluar di tempat pertama?
toddlermenot
@toddlermenot Sayangnya tidak. Yang saya dapatkan adalah orang-orang membuat pernyataan bahwa itu adalah Excel spesifik tanpa apa-apa untuk mendukung pernyataan itu, yang mengecewakan.
Burhan Ali

Jawaban:

7

RFC 4180 umumnya diakui sebagai standar untuk format CSV, dan tidak menyebutkan fitur seperti itu.

Model W3C untuk Data Tabular dan Metadata di Web menyebutkannya sebagai fitur yang tidak berada dalam cakupannya:

Banyak file "CSV" yang menyematkan metadata, misalnya dalam baris sebelum baris header dari dokumen CSV. Spesifikasi ini tidak mendefinisikan format apa pun untuk menyematkan metadata dalam file CSV, selain dari nama kolom di baris header.

Jadi, sementara saya tidak menemukan bukti langsung bahwa fitur ini khusus untuk Excel, ini tampaknya masih merupakan kasus karena tampaknya tidak ada dokumen standardisasi yang mencakup fitur itu.

Stefan Kögl
sumber
Sumber yang bagus. Satu hal yang harus saya katakan adalah bahwa sep = | mendefinisikan pemisah untuk digunakan di Excel sebagai karakter pipa ('|'). Ini tidak banyak digunakan tetapi tidak eksklusif untuk Excel. Ini adalah arahan pemisah. Versi internasional Excel iirc memiliki karakter yang berbeda, misalnya, bahasa Eropa pada mesin yang menjalankan excel menggunakan titik koma.
v first firstName
1
Saya menyadari penggunaannya (mungkin itu tidak sepenuhnya jelas dari jawaban saya). Saya baru saja menunjukkan bahwa tampaknya Excel memperkenalkan fitur itu, dengan itu didasarkan pada segala jenis standar (publik).
Stefan Kögl
0

Untuk berkontribusi terhadap jawaban atas salah satu pertanyaan Anda: "Apakah ada alat lain yang secara resmi mendukung fitur ini?"

Ini tidak didukung oleh Apple Numbers (Saya sudah menguji menggunakan Numbers versi 3.6.2).

Ini juga tidak didukung oleh csv2json ( https://www.npmjs.com/package/csv2json ) atau csvtojson ( https://www.npmjs.com/package/csvtojson ).

kintel
sumber
-1

Instruksi sep = digunakan di semua negara di mana koma digunakan sebagai pembatas desimal, seperti Italia. Karena Excel mengekspor CSV menggunakan titik koma alih-alih koma di negara-negara tersebut, jika Anda ingin memastikan bahwa file dapat dibaca di AS atau negara lain, Anda PERLU

sep =;

di atas file. Ini adalah khusus Excel dan mungkin diabaikan oleh aplikasi lain.

Dario de Judicibus
sumber
-2

Hampir semua alat yang dapat mengimpor dari file .csv mengakui bahwa koma bukan satu-satunya pemisah yang mungkin, tab sudah umum untuk waktu yang lama misalnya. Saya pikir ini kembali ke hari-hari kartu punch bahkan, bahwa perlu ada beberapa karakter yang diakui sebagai bidang data akhir - dengan pengecualian dari sistem yang menggunakan bidang lebar tetap atau bidang awalan panjang hampir setiap sistem membutuhkan ini sejak munculnya komputer.

3 penting adalah pemisah bidang, pemisah catatan dan akhir penanda data, csv secara default menggunakan koma, baris baru dan akhir file untuk masing-masing tetapi hampir semua input yang valid dapat digunakan, Anda memerlukan mekanisme untuk keluar dari spidol khusus jika itu terjadi dalam data Anda yang valid.

Satu sistem bersejarah yang saya temui menggunakan baris baru untuk ujung lapangan, 2 baris kosong untuk akhir catatan dan *!*!* END *!*!*untuk akhir data. Saya biasanya menemukan semua yang ,\t|:digunakan sebagai pemisah bidang bersama dengan berbagai karakter kontrol.

Satu hal yang perlu diwaspadai adalah bahwa Perancis dan lainnya menggunakan koma sebagai titik desimal - ini dapat menyebabkan semua jenis kesenangan dan permainan. Ada tingkat standardisasi untuk file csv di rfc4180 tetapi ada kalanya Anda perlu mengedit file secara manual saat mengekspor dari satu program dan mengimpor ke yang lain.

Untuk menjawab bagian kedua dari pertanyaan Anda Python, misalnya, termasuk pembaca csv / penulis sebagai salah satu perpustakaan standar yang menawarkan opsi berikut:

  • delimiter- Ini adalah pemisah bidang, (kecuali lolos).
  • doublequote- Jika benar maka " dalam suatu bidang akan direpresentasikan sebagai""
  • escapechar- menghilangkan makna khusus dari karakter berikut, misalnya jika diatur \maka kutipan dapat direpresentasikan sebagai\"
  • lineterminator- biasanya satu dari \n, \r, \r\natau\n\r
  • quotechar- karakter yang digunakan untuk mengutip string, biasanya "atau'
  • quoting - Tandai sebagai salah satu dari:
    • ALL - Setiap bidang dalam tanda kutip, yaitu: "1","Free Beer","ASAP"
    • MINIMAL - Hanya kolom kutipan yang memiliki karakter khusus, yaitu: 1,"Beer, (Free)", Now, Please
    • QUOTE_NONNUMERIC - Mengutip apa pun yang bukan angka, yaitu: 1,"Beer, (Free)", "Now", "Please"
    • NONE - Jangan mengutip kata ganti melarikan diri, yaitu: 1,Beer\, (Free), Now, Please
  • skipinitialspace- lewati ruang terdepan dari setiap bidang sehingga Anda dapat menggunakan , alih-alih hanya ,sebagai pemisah bidang.

Secara umum alat yang lebih fleksibel dan dipikirkan dengan baik yang dapat mengimpor file csv adalah lebih banyak pilihan ini, (mungkin dengan nama dan / atau mekanisme yang berbeda), yang akan dimilikinya.

Steve Barnes
sumber
2
Ini tidak menjawab pertanyaan saya. Ini menjelaskan apa itu CSV, yang sudah saya ketahui. Pertanyaan saya adalah tentang sintaks tertentu. Apakah ada latar belakang yang bisa saya tambahkan ke pertanyaan saya untuk mengklarifikasi hal-hal?
Burhan Ali
1
Terima kasih tapi itu masih tidak membantu. sep=bukan parameter untuk parser. Saya telah menambahkan beberapa klarifikasi untuk pertanyaan saya.
Burhan Ali
1
@SteveBarnes Tetapi apakah alat apa pun, misalnya pustaka Python yang Anda sebutkan, memungkinkan opsi sebagai bagian dari konten file? Itulah, saya pikir, poin utama dari pertanyaan itu.
Randy Orrison
1
"Karena mereka salah satu dari banyak keanehan yang unggul." Apakah itu? Itu bagian dari apa yang saya coba untuk lakukan. Saya tidak ingin tahu apa itu CSV. Saya tidak ingin tahu cara mengurai CSV. Saya ingin tahu apa sep=itu dan dari mana asalnya.
Burhan Ali
1
September = adalah metode petunjuk Microsoft Excel Khusus yang tidak tercakup dalam spesifikasi Non-Microsoft yang dapat saya temukan. Itu berasal dari bagian dari Microsoft.
Steve Barnes