Saya punya CSV dua kolom dengan nama dan nomor. Beberapa nama orang menggunakan koma, misalnya Joe Blow, CFA.
Koma ini memecah format CSV, karena ditafsirkan sebagai kolom baru.
Saya sudah membaca dan resep yang paling umum tampaknya menggantikan karakter itu, atau mengganti pembatas, dengan nilai baru (misalnya this|that|the, other
).
Saya benar-benar ingin menjaga pemisah koma (saya tahu excel mendukung pembatas lain tetapi penerjemah lain mungkin tidak). Saya juga ingin menyimpan koma dalam nama, karena Joe Blow| CFA
terlihat cukup konyol.
Apakah ada cara untuk memasukkan koma dalam kolom CSV tanpa memecah format, misalnya dengan menghindarinya?
Jawaban:
Lampirkan bidang dalam tanda kutip, misalnya
Lihat wikipedia .
Diperbarui :
Untuk menyandikan kuotasi, gunakan
"
, satu simbol kuotasi ganda dalam bidang yang akan dikodekan sebagai""
, dan seluruh bidang akan menjadi""""
. Jadi, jika Anda melihat yang berikut ini misalnya dalam Excel:file CSV akan berisi:
Koma hanya dienkapsulasi menggunakan tanda kutip, jadi
,
menjadi","
.Sebuah koma dan kebutuhan kutipan untuk dikemas dan dikutip, sehingga
","
menjadi""","""
.sumber
","
), dan tanda kutip lolos (mis."""
)Masalah dengan format CSV, apakah tidak ada satu spec, ada beberapa metode yang diterima, tanpa cara membedakan mana yang harus digunakan (untuk menghasilkan / menginterpretasikan). Saya membahas semua metode untuk melarikan diri karakter (baris baru dalam kasus itu, tetapi premis dasar yang sama) di pos lain . Pada dasarnya ia menggunakan proses generasi CSV / melarikan diri untuk pengguna yang dituju, dan berharap yang lain tidak keberatan.
Dokumen spesifikasi referensi .
sumber
Jika Anda ingin membuat yang Anda katakan, Anda dapat menggunakan tanda kutip. Sesuatu seperti ini
jadi sekarang, Anda dapat menggunakan koma dalam variabel nama Anda.
sumber
$whatever = "\"".$name."\"";
Anda perlu mengutip nilai-nilai itu.
Berikut adalah spesifikasi yang lebih rinci.
sumber
Selain poin dalam jawaban lain: satu hal yang perlu diperhatikan jika Anda menggunakan kutipan di Excel adalah penempatan spasi Anda. Jika Anda memiliki baris kode seperti ini:
Excel akan memperlakukan kutipan awal sebagai kutipan literal alih-alih menggunakannya untuk menghindari koma. Kode Anda perlu diubah menjadi
Kehalusan inilah yang membawaku ke sini.
sumber
Saya menghadapi masalah yang sama dan mengutipnya
,
tidak membantu. Akhirnya, saya mengganti,
dengan+
, menyelesaikan pemrosesan, menyimpan output ke file outfile dan mengganti+
dengan,
. Ini mungkin terlihat jelek tapi itu berhasil untuk saya.sumber
+
tidak ada dalam data saya sama sekali. Terima kasih atas komentar Anda.""
. Ini adalah cara normal untuk melakukannya.field = field.replace('"', '""')
Langkah 2 - setelah Langkah 1, sertakan bidang itu sendiri dalam tanda kutip ganda misalnyafield = '"' + field + '"'
- maka Anda adalah pemain besi, saya pikir.Bergantung pada bahasa Anda, mungkin ada metode to_json yang tersedia. Itu akan luput dari banyak hal yang merusak CSV.
sumber
Saya menemukan bahwa beberapa aplikasi seperti Numbers in Mac mengabaikan kuotasi ganda jika ada ruang sebelumnya.
a, "b,c"
tidak bekerja sambila,"b,c"
bekerja.sumber
Anda dapat menyandikan nilai-nilai Anda, misalnya dalam PHP base64_encode ($ str) / base64_decode ($ str)
IMO ini lebih sederhana daripada menggandakan kutipan, dll.
https://www.php.net/manual/en/function.base64-encode.php
Nilai yang dikodekan tidak akan pernah mengandung koma sehingga setiap koma di CSV Anda akan menjadi pemisah.
sumber
Anda dapat menggunakan Templat literal (string Templat)
misalnya -
sumber
Anda dapat menggunakan
Text_Qualifier
bidang di manajer koneksi file flat Anda sebagai"
. Ini harus membungkus data Anda dalam tanda kutip dan hanya dipisahkan dengan koma yang berada di luar tanda kutip.sumber
Pertama, jika nilai item memiliki karakter tanda kutip ganda ("), ganti dengan 2 karakter tanda kutip ganda (" ")
Akhirnya, bungkus nilai barang:
ON LEFT: Dengan karakter kutipan ganda (")
ON KANAN: Dengan karakter kutipan ganda (") dan karakter koma (,)
sumber
Kutipan ganda tidak bekerja untuk saya, itu bekerja untuk saya
\"
. Jika Anda ingin menempatkan tanda kutip ganda sebagai contoh, Anda dapat mengatur\"\"
.Anda dapat membuat rumus, sebagai contoh:
akan menulis dalam csv:
sumber
Mungkin bukan yang dibutuhkan di sini, tetapi ini adalah pertanyaan yang sangat lama dan jawabannya dapat membantu orang lain. Kiat yang menurut saya berguna dengan mengimpor ke Excel dengan pemisah yang berbeda adalah dengan membuka file dalam editor teks dan menambahkan baris pertama seperti:
sep = |
dimana | adalah pemisah yang ingin Excel gunakan. Atau Anda dapat mengubah pemisah default di Windows tetapi agak bertele-tele:
Panel Kontrol> Jam & wilayah> Wilayah> Format> Tambahan> Nomor> Pemisah daftar [ubah dari koma ke alternatif pilihan Anda]. Itu berarti Excel juga akan default untuk mengekspor CSV menggunakan pemisah yang dipilih.
sumber