Data & spreadsheet · CSV Lebih bersih
Cara Kerja Deteksi Pembatas CSV: Koma, Titik Koma, Tab, dan Pipa
· Cara kerjanya
csv pembersihan data format file
File CSV tidak pernah menyebutkan karakter mana yang memisahkan bidangnya, jadi perangkat lunak harus menebaknya. Posting ini menjelaskan cara kerja delimiter sniffing, mengapa gagal pada file yang rumit, dan cara membuat delimiter eksplisit.
File yang dibuka sebagai satu kolom panjang — mengapa pembatas tidak disimpan di mana pun di CSV
Seorang analis data membuka ekspor .csv dan melihat satu bidang panjang di setiap baris. Ekstensi tidak memberi tahu pembaca pemisah mana yang digunakan, dan file biasanya tidak membawa deklarasi pembatas. Aplikasi yang menggunakan koma akan membaca header yang dipisahkan titik koma seperti nama;kota;catatan sebagai satu kolom. Sebelum mengubah nilai, tanyakan karakter mana yang benar-benar membagi bidang dan apakah importir mempunyai cara untuk mengesampingkan tebakannya.
Empat kandidat yang didukung: koma, titik koma, tab, dan pipa
ToolAcre menganggap koma, titik koma, tab, dan pipa sebagai kandidat. Titik koma umum terjadi ketika koma sudah digunakan sebagai pemisah desimal, tab menghindari benturan tanda baca dalam ekspor sederhana, dan pipa terkadang memisahkan log atau dump database. Spasi tidak termasuk dalam pilihan otomatis alat ini: nama dan sel teks bebas sering kali berisi spasi. Jangan menambahkan kandidat hanya karena sering muncul dalam contoh teks; pemisah harus membagi baris menjadi bidang yang konsisten.
Cara kerja sniffing — menghitung karakter kandidat per baris dan memilih karakter yang memberikan jumlah bidang yang konsisten di seluruh baris
Implementasinya menghapus tanda urutan byte UTF-8 di depan dan mem-parsing sampel hingga sepuluh baris dengan masing-masing kandidat. Ini mencatat lebar baris tersebut dan menolak kandidat mana pun yang tidak pernah menghasilkan setidaknya dua kolom. Seorang kandidat mendapat skor lebih tinggi ketika menghasilkan lebih banyak kolom secara konsisten di seluruh baris; lebar yang tidak konsisten dihukum dua kali dalam skor. Yang terpenting, penguraian mengamati kolom yang dikutip, sehingga koma di dalam alamat yang dikutip tidak dihitung sebagai batas kolom. Ini berbeda dengan penghitungan karakter yang naif dan itulah sebabnya kolom alamat yang berantakan tidak perlu dideteksi.
Jika sniffing gagal — kolom teks bebas penuh koma, file satu kolom, dan kolom tanda kutip yang menyembunyikan pemisah sebenarnya
Tidak ada tebakan yang sempurna. File yang sangat pendek hanya memiliki sedikit bukti, satu kolom CSV tidak memiliki kandidat yang terbagi menjadi dua, dan format kutipan yang salah dapat membuat beberapa penguraian kandidat terlihat tidak rapi. Kolom teks bebas yang diisi dengan pemisah dapat bersaing dengan pembatas sebenarnya ketika kutipan rusak. Pemisah campuran antar baris bukanlah satu dialek CSV yang bersih. Alat ini melaporkan peringatan penguraian dan menampilkan pemilihan pembatas manual; pengguna yang mengetahui konvensi ekspor hulu dapat mengesampingkan pilihan yang disimpulkan daripada menganggap heuristik sebagai spesifikasi.
Contoh praktis — ekspor yang dipisahkan titik koma dengan koma di dalam alamat, menunjukkan mengapa hitungan naif memilih karakter yang salah
Coba contoh kecil dengan nama header;kota;catatan dan baris Ada;Paris;"Pertemuan di 10, dekat stasiun". Menghitung koma mentah mungkin salah memilih koma karena catatan tersebut mengandung tanda baca, terutama pada beberapa baris tersebut. Pengurai titik koma mengembalikan tiga bidang di kedua baris; pengurai koma tidak menyediakan struktur persegi panjang yang sama. Konfirmasikan pratinjau memperlihatkan nama, kota, dan catatan sebagai kolom terpisah sebelum memangkas, menghapus duplikat, atau mengekspor. Jika salah satu baris sumber memiliki kutipan tidak tertutup, periksa baris tersebut alih-alih membuangnya secara diam-diam untuk meningkatkan skor.
Memilih pembatas keluaran — mencocokkan pemisah dengan program dan lokal yang akan membaca file selanjutnya
Pemisah masukan dan pemisah keluaran adalah keputusan yang berbeda. Anda dapat mengimpor file titik koma Eropa tetapi mengekspor teks yang dipisahkan koma bergaya RFC untuk program yang memerlukan koma. Penulis yang benar mengutip bidang yang berisi pembatas keluaran, tanda kutip yang disematkan, atau jeda baris. Putuskan apakah penerima Anda memerlukan UTF-8 BOM sebelum mengunduh; beberapa aplikasi spreadsheet menggunakan satu untuk mengenali pengkodean sementara banyak parser menginginkan file tanpa itu. Periksa header yang diunduh di program tujuan, tidak hanya pratinjau browser.
Apa yang tidak tercakup di sini — file yang menggabungkan pembatas antar baris, dan ekspor dengan lebar tetap yang tidak menggunakan pembatas sama sekali
Deteksi tidak dapat memperbaiki file yang mengubah pemisah di tengah jalan, juga tidak dapat menyimpulkan kolom dalam ekspor dengan lebar tetap jika tidak ada pembatas. Ia tidak mengetahui apakah tanda koma yang dikutip dimaksudkan sebagai bagian dari alamat jalan atau kesalahan entri data: koma mengikuti sintaksis, bukan makna. Pembersih CSV akan menampilkan baris yang tidak rata dan mempertahankan nilainya daripada menebak-nebak cara menghapus data pelanggan. Gunakan pratinjau dan peringatannya untuk mendiagnosis masalah sistem sumber sebelum melakukan langkah pembersihan permanen.
Jadikan pembatas secara eksplisit alih-alih berharap — bagaimana perbaikan pembatas ToolAcre CSV Cleaner menghasilkan file dengan satu pemisah yang konsisten
Tebakan pembatas adalah penguraian beberapa baris berdasarkan bukti, bukan janji yang ditulis di dalam file CSV. CSV Cleaner mengimplementasikannya secara lokal di browser Anda, memungkinkan Anda memilih pemisah yang berbeda dan menulis satu dialek keluaran yang konsisten. Jika panduan impor menebak secara berbeda minggu depan, catat konvensi keluaran di samping file sehingga pembaca berikutnya tidak perlu menemukannya kembali.