Go:
Робота з CSV
Як:
Робота з файлами CSV у Go є простою завдяки стандартній бібліотеці encoding/csv
. Нижче наведено основні вказівки щодо читання та запису файлів CSV.
Читання файлу CSV
Щоб прочитати файл CSV, спочатку відкрийте файл за допомогою os.Open
, а потім створіть новий читач CSV за допомогою 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
з наданими записами. Завжди пам’ятайте очистити буфер записувача, щоб переконатися, що всі буферизовані дані записані у файл.
Поглиблений огляд
Пакет Go encoding/csv
забезпечує надійну підтримку для читання та запису файлів CSV, але він розроблений з урахуванням простоти, що означає, що він не обробляє складніші сценарії, такі як автоматичне визначення роздільників, робота з лапками або вбудовані переноси рядків у полях без ручного втручання.
Історично обробка CSV у мовах програмування часто була обтяжливою через ці складнощі, але стандартна бібліотека Go абстрагує багато з цих проблем, дозволяючи розробникам працювати з даними CSV з відносною легкістю. Однак, для складнішої маніпуляції CSV можуть знадобитися сторонні бібліотеки, як-от gocsv
, або вручну розбір.
Одна помітна риса пакета csv
Go - це підтримка вказівки користувацького коми (роздільника), що дозволяє йому безперешкодно працювати з варіантами файлів CSV, як-от табулювання (TSV). Однак, коли мова йде про дуже нерегулярні або нестандартні файли CSV, програмістам Go може знадобитися розширити існуючі реалізації читача або письменника csv.
Хоча можливості обробки CSV в Go є міцними для загальних цілей, для застосувань, що вимагають інтенсивної маніпуляції з даними, таких як наука про дані або складні завдання трансформації даних, програмістам може знадобитися звернутися до спеціалізованих пакетів обробки даних або навіть інших мов, краще підходящих для цих завдань, як-от Python з його бібліотекою pandas
. Тим не менш, для прямих операцій з читання-запису CSV стандартна бібліотека Go вирізняється своєю ефективністю та простотою.