Go:
การทำงานกับ CSV
วิธีการ:
การทำงานกับไฟล์ CSV ใน Go นั้นง่ายดาย ด้วยไลบรารีมาตรฐาน encoding/csv
นี่คือการเริ่มต้นอ่านและเขียนไฟล์ CSV
การอ่านไฟล์ CSV
ในการอ่านจากไฟล์ CSV, คุณเริ่มต้นโดยเปิดไฟล์โดยใช้ os.Open
, จากนั้นสร้าง CSV reader ใหม่ด้วย csv.NewReader
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
file, err := os.Open("data.csv")
if err != nil {
panic(err)
}
defer file.Close()
reader := csv.NewReader(file)
records, err := reader.ReadAll()
if err != nil {
panic(err)
}
for _, record := range records {
fmt.Println(record)
}
}
ส่วนของโค้ดนี้จะอ่านทุกระเบียนจาก data.csv
และพิมพ์ออกมา แต่ละระเบียนเป็นสไลซ์ของฟิลด์
การเขียนไปยังไฟล์ CSV
สำหรับการเขียน, คุณใช้ csv.NewWriter
และ writer.WriteAll
หรือ writer.Write
สำหรับการเขียนหลายๆ หรือระเบียน CSV แบบเดียว, ตามลำดับ
package main
import (
"encoding/csv"
"os"
)
func main() {
file, err := os.Create("output.csv")
if err != nil {
panic(err)
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
records := [][]string{
{"Name", "Age", "City"},
{"John Doe", "30", "New York"},
{"Jane Doe", "27", "Los Angeles"},
}
if err := writer.WriteAll(records); err != nil {
panic(err)
}
}
สิ่งนี้จะสร้างไฟล์ที่ชื่อ output.csv
ด้วยระเบียนที่ให้มา อย่าลืมใช้ flush กับ writer เพื่อให้ข้อมูลทั้งหมดถูกเขียนไปยังไฟล์
การศึกษาลึกลงไป
แพ็คเกจ encoding/csv
ของ Go ให้การสนับสนุนที่แข็งแกร่งสำหรับการอ่านและเขียนไฟล์ CSV แต่ถูกออกแบบมาด้วยความเรียบง่ายในใจ ซึ่งหมายความว่ามันไม่จัดการกับสถานการณ์ที่ซับซ้อนเช่น การตรวจจับ delimiters โดยอัตโนมัติ, การจัดการกับคำพูดหรือการหักบรรทัดในฟิลด์โดยไม่ต้องจัดการเอง
ในอดีต, การจัดการ CSV ในภาษาโปรแกรมมิ่งมักจะยุ่งยากเนื่องจากความซับซ้อนเหล่านี้ แต่ไลบรารีมาตรฐานของ Go ทำให้หลายๆ ปัญหาเหล่านี้เป็นเรื่องง่าย, ช่วยให้นักพัฒนาสามารถทำงานกับข้อมูล CSV ได้โดยง่าย อย่างไรก็ตาม, สำหรับการจัดการ CSV ที่ซับซ้อนมากขึ้น, อาจจำเป็นต้องใช้ไลบรารีภายนอกเช่น gocsv
หรือการจัดการการแยกวิเคราะห์ด้วยตัวเอง
หนึ่งในจุดเด่นของแพ็คเกจ csv
ของ Go คือการสนับสนุนให้กำหนด comma (delimiter) ที่กำหนดเองได้ ซึ่งช่วยให้สามารถทำงานได้อย่างราบรื่นกับรูปแบบไฟล์ CSV ต่างๆ เช่น ค่าที่แยกด้วยแท็บ (TSV) อย่างไรก็ตาม, เมื่อต้องจัดการกับไฟล์ CSV ที่ไม่เป็นมาตรฐานสูงหรือมีความไม่สม่ำเสมอ, โปรแกรมเมอร์ Go อาจพบว่าตัวเองต้องขยายการทำงานของ csv reader หรือ writer ที่มีอยู่
ถึงแม้ว่าความสามารถในการจัดการ CSV ของ Go จะแข็งแกร่งสำหรับจุดประสงค์ทั่วไป, สำหรับการใช้งานที่ต้องการการจัดการข้อมูลอย่างหนัก, เช่น งานวิทยาศาสตร์ข้อมูลหรืองานแปลงข้อมูลที่ซับซ้อน, โปรแกรมเมอร์อาจมองหาแพ็คเกจการประมวลผลข้อมูลเฉพาะหรือแม้กระทั่งภาษาอื่นที่เหมาะกับงานเหล่านี้, เช่น Python กับไลบรารี pandas
อย่างไรก็ตาม, สำหรับการดำเนินการอ่าน-เขียน CSV ที่ตรงไปตรงมา, ไลบรารีมาตรฐานของ Go โดดเด่นด้วยประสิทธิภาพและความเรียบง่าย