Dateien mit benutzerdefinierten Trennzeichen in Golang lesen: Verwenden Sie bufio.NewReader, um ein Reader-Objekt zu erstellen. Richten Sie die Funktion „reader.SplitFunc“ ein, um die Position und Zeile des benutzerdefinierten Trennzeichens zurückzugeben. Lesen Sie die Datei in einer Schleife und verarbeiten Sie sie Zeile für Zeile.
So lesen Sie Dateien mit benutzerdefiniertem Trennzeichen in Golang
Beim Lesen von Dateien in Golang ist das Standardtrennzeichen Newline. Manchmal müssen wir jedoch möglicherweise benutzerdefinierte Trennzeichen verwenden, um Dateien zu lesen. In diesem Artikel wird erläutert, wie Sie Dateien mit benutzerdefinierten Trennzeichen lesen.
Codebeispiel
package main import ( "bufio" "fmt" "log" "os" ) func main() { // 打开文件以进行读取 file, err := os.Open("data.csv") if err != nil { log.Fatal(err) } defer file.Close() // 使用自定义分隔符创建 bufio.Reader 对象 reader := bufio.NewReader(file) reader.SplitFunc = func(data []byte, atEOF bool) (int, []byte, error) { // 返回自定义分隔符的位置 delimIndex := bytes.IndexByte(data, ';') // 假设分隔符是分号(;) if delimIndex == -1 { // 如果没有找到分隔符,则返回当前行的剩余部分 return len(data), data, nil } // 返回分隔符的位置和分隔符之前的行 return delimIndex + 1, data[:delimIndex], nil } // 逐行读取文件 for { line, _, err := reader.ReadLine() if err == io.EOF { break } else if err != nil { log.Fatal(err) } // 处理每行 fmt.Println(string(line)) } }
Praktischer Fall
Das Folgende ist ein Codebeispiel, das Semikolon-Trennzeichen zum Lesen einer CSV-Datei verwendet:
package main import ( "bufio" "fmt" "log" "os" ) func main() { // 打开 CSV 文件 file, err := os.Open("customers.csv") if err != nil { log.Fatal(err) } defer file.Close() // 使用分号分隔符创建 bufio.Reader 对象 reader := bufio.NewReader(file) reader.SplitFunc = func(data []byte, atEOF bool) (int, []byte, error) { delimIndex := bytes.IndexByte(data, ';') if delimIndex == -1 { return len(data), data, nil } return delimIndex + 1, data[:delimIndex], nil } // 逐行读取 CSV 文件 for { line, _, err := reader.ReadLine() if err == io.EOF { break } else if err != nil { log.Fatal(err) } // 根据分隔符拆分每一行 parts := bytes.Split(line, []byte(";")) // 处理每一行 fmt.Printf("ID: %s, Name: %s, Email: %s\n", parts[0], parts[1], parts[2]) } }
Das obige ist der detaillierte Inhalt vonWie lese ich eine Datei mit benutzerdefiniertem Trennzeichen in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!