CSV เทียบกับ TSV: ควรเลือกรูปแบบตัวคั่นแบบไหน?
ตอบด่วน
ใช้ CSV สำหรับการแลกเปลี่ยนข้อมูลทั่วไป import/export สเปรดชีต และความเข้ากันได้สูงสุด ใช้ TSV เมื่อข้อมูลมีจุลภาคแต่ไม่มี tab เพื่อหลีกเลี่ยง quoting และ escaping TSV พบใน bioinformatics และ NLP; CSV เป็นค่าเริ่มต้นสากล
การแนะนำ
CSV (Comma-Separated Values) และ TSV (Tab-Separated Values) เป็นรูปแบบ plain-text สำหรับข้อมูลตาราง ทั้งคู่เก็บแถวเป็นบรรทัด คั่นด้วยตัวคั่น CSV ใช้จุลภาค TSV ใช้ tab การเลือกตัวคั่นมีผลต่อ escaping ความเข้ากันได้กับสเปรดชีต และการจัดการฟิลด์ข้อความที่มีตัวคั่น
ทีละขั้นตอน
-
เปรียบเทียบตัวคั่นและการหลบหนี
CSV ใช้ลูกน้ำ หากช่องมีเครื่องหมายจุลภาค จะต้องใส่เครื่องหมายคำพูด: "Smith, John" หากฟิลด์มีเครื่องหมายคำพูด จะต้องหลีกเลี่ยง: "He says ""hello""" TSV ใช้แท็บ แท็บไม่ค่อยปรากฏในข้อมูลข้อความ ดังนั้นช่อง TSV จึงไม่จำเป็นต้องใส่เครื่องหมายคำพูดหรือ Escape — แยกวิเคราะห์ได้ง่ายกว่า
-
เปรียบเทียบความเข้ากันได้
CSV รองรับในระดับสากล: Excel, Google Sheets=Sheets, ทุกฐานข้อมูล, ทุกภาษาการเขียนโปรแกรม TSV ยังได้รับการสนับสนุนอย่างกว้างขวางแต่มีมาตรฐานน้อยกว่า — เครื่องมือบางอย่างตีความแท็บแตกต่างออกไป Excel ตรวจพบทั้งสองโดยอัตโนมัติ แต่ CSV เป็นรูปแบบการส่งออกเริ่มต้น
-
เปรียบเทียบความซับซ้อนในการแยกวิเคราะห์
CSV การแยกวิเคราะห์ต้องใช้เครื่องสถานะเพื่อจัดการกฎการเสนอราคา (RFC 4180) TSV การแยกวิเคราะห์เป็นเรื่องเล็กน้อย: แบ่งแต่ละบรรทัดด้วยอักขระแท็บ ซึ่งจะทำให้ TSV แยกวิเคราะห์ได้เร็วขึ้นและเกิดข้อผิดพลาดน้อยลง อย่างไรก็ตาม CSV มีข้อมูลจำเพาะอย่างเป็นทางการ (RFC 4180) TSV ไม่มีมาตรฐานที่เป็นทางการ
-
เปรียบเทียบกรณีการใช้งาน
CSV: การนำเข้า/ส่งออกสเปรดชีต, ข้อมูล APIs, ไปป์ไลน์ ETL, ไฟล์กำหนดค่า, การแลกเปลี่ยนข้อมูลสากล TSV: ชีวสารสนเทศศาสตร์ (BLAST, GFF), NLP (รูปแบบ CoNLL), ข้อมูลคลิปบอร์ด (คัดลอกจาก Excel = TSV), ไฟล์บันทึกที่มีตัวคั่นแท็บ
-
ตัดสินใจตามข้อมูลของคุณ
หากข้อมูลของคุณมีเครื่องหมายจุลภาค (ชื่อ ที่อยู่ ประโยค): TSV หลีกเลี่ยงการอ้างอิง หากข้อมูลของคุณมีแท็บ (ข้อความไม่ค่อยพบ): CSV หลีกเลี่ยงการอ้างอิง หากคุณต้องการความเข้ากันได้สูงสุด: CSV หากคุณต้องการการแยกวิเคราะห์ที่ง่ายขึ้นและข้อมูลของคุณไม่มีแท็บ: TSV
ตัวอย่าง
ข้อมูลเดียวกันใน CSV และ TSV
ป้อนข้อมูล: CSV: ชื่อ,อายุ,เมือง\n"Smith, John",30,"New York, NY"\nTSV: name\tage\tcity\nSmith, John\t30\tNew York, NY
เอาท์พุต: CSV ต้องใช้เครื่องหมายคำพูดสำหรับช่องที่มีเครื่องหมายจุลภาค TSV ไม่จำเป็นต้องใส่เครื่องหมายคำพูดเนื่องจากแท็บไม่ปรากฏในข้อมูล
ปัญหาทั่วไป
- CSV กรณีขอบเครื่องหมายคำพูด: ช่องที่มีเครื่องหมายจุลภาค เครื่องหมายคำพูด หรือการขึ้นบรรทัดใหม่ต้องใช้กฎเครื่องหมายคำพูด RFC 4180 — การแบ่งแบบไร้เดียงสาด้วยเครื่องหมายจุลภาคจะทำให้ข้อมูลเสียหายด้วยเครื่องหมายจุลภาคที่ฝังอยู่
- TSV ไม่มีมาตรฐานที่เป็นทางการ: TSV ไม่มีมาตรฐานที่เป็นทางการ ซึ่งต่างจาก CSV (RFC 4180) ตรงที่ TSV ไม่มีข้อมูลจำเพาะอย่างเป็นทางการ ดังนั้นเครื่องมืออาจจัดการ Edge Case แตกต่างออกไป — ใช้ TSV ภายในไปป์ไลน์ที่ได้รับการควบคุมเท่านั้น
- ปัญหาการเข้ารหัสของ Excel: Excel อาจส่งออก CSV ด้วย BOM หรือตัวคั่นเฉพาะสถานที่ (อัฒภาคในภาษาของสหภาพยุโรป) — ระบุการเข้ารหัส UTF-8 และตรวจสอบตัวคั่นในการนำเข้า
- ความคลุมเครือในการขึ้นบรรทัดใหม่: CSV ช่องที่มีการขึ้นบรรทัดใหม่แบบฝังนั้นถูกต้อง แต่การแยกวิเคราะห์ทีละบรรทัด — TSV ไม่ค่อยมีปัญหานี้เนื่องจากแท็บพบไม่บ่อยในข้อมูลข้อความ
เคล็ดลับ
- ใช้ CSV เพื่อความเข้ากันได้สูงสุด — สเปรดชีต ฐานข้อมูล และภาษาการเขียนโปรแกรมทุกภาษารองรับโดยกำเนิด
- ใช้ TSV เมื่อข้อมูลของคุณมีเครื่องหมายจุลภาคแต่ไม่มีแท็บ (ชื่อ ที่อยู่ ประโยค) เพื่อหลีกเลี่ยงความซับซ้อนในการอ้างอิงโดยสิ้นเชิง
- ใช้ตัวแยกวิเคราะห์ CSV ที่เหมาะสมเสมอ (ไม่ใช่ string.split) เพื่อจัดการกฎการเสนอราคา RFC 4180 — การแยกแบบไร้เดียงสาทำให้ฟิลด์เสียหายด้วยเครื่องหมายจุลภาคหรือเครื่องหมายคำพูดที่ฝังอยู่
- เมื่อคัดลอกข้อมูลจาก Excel ไปยังโปรแกรมแก้ไขข้อความ คลิปบอร์ดจะใช้รูปแบบ TSV — วางลงในไฟล์ .tsv เพื่อรักษาฟิลด์ด้วยเครื่องหมายจุลภาคอย่างถูกต้อง