Метод csv.Reader.Read
Метод csv.Reader.Read читает одну запись из CSV-потока и возвращает слайс строк,
содержащих поля этой записи. Метод не принимает никаких параметров.
При чтении записи учитываются все настройки структуры Reader,
включая разделитель полей, комментарии и обработку кавычек.
Синтаксис
func (r *Reader) Read() (record []string, err error)
Пример
Давайте прочитаем простую CSV-запись с двумя полями:
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
data := "John,30\n"
reader := csv.NewReader(strings.NewReader(data))
res, err := reader.Read()
if err != nil {
fmt.Println(err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
[John 30]
Пример
Давайте прочитаем CSV-запись с полями в кавычках:
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
data := "\"John, Doe\",\"Software Engineer\"\n"
reader := csv.NewReader(strings.NewReader(data))
res, err := reader.Read()
if err != nil {
fmt.Println(err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
[John, Doe Software Engineer]
Пример
Давайте прочитаем несколько записей в цикле до конца файла:
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
data := "John,30,Engineer\nJane,25,Designer\nBob,35,Manager\n"
reader := csv.NewReader(strings.NewReader(data))
for {
res, err := reader.Read()
if err != nil {
break
}
fmt.Println(res)
}
}
Результат выполнения кода:
[John 30 Engineer]
[Jane 25 Designer]
[Bob 35 Manager]
Пример
Давайте обработаем ошибку, если файл пуст или достигнут конец:
package main
import (
"encoding/csv"
"fmt"
"io"
"strings"
)
func main() {
data := ""
reader := csv.NewReader(strings.NewReader(data))
res, err := reader.Read()
if err == io.EOF {
fmt.Println("End of file")
return
}
if err != nil {
fmt.Println(err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
"End of file"
Смотрите также
-
метод
csv.Reader.ReadAll,
который читает все записи из CSV-потока сразу -
метод
csv.Writer.Write,
который записывает одну запись в CSV-поток -
метод
csv.Writer.WriteAll,
который записывает все записи в CSV-поток -
тип
csv.ParseError,
который возвращается при ошибках синтаксического анализа CSV