Golang でカスタム区切り文字を使用してファイルを読み取る: bufio.NewReader を使用して Reader オブジェクトを作成します。カスタム セパレータの位置と行を返すように、reader.SplitFunc 関数を設定します。ファイルをループで読み取り、1 行ずつ処理します。
Golangでカスタム区切り文字を使用してファイルを読み取る方法
Golangでファイルを読み取る場合、デフォルトの区切り文字は改行です。ただし、ファイルを読み取るためにカスタム区切り文字を使用する必要がある場合があります。この記事では、カスタム区切り文字を使用してファイルを読み取る方法について説明します。
コード例
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)) } }
実際のケース
以下は、セミコロン区切り文字を使用して CSV ファイルを読み取るコード例です:
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]) } }
以上がGolangでカスタム区切り文字を使用してファイルを読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。