Go 删除CSV中的空行
我正在尝试清理一个CSV文件,该文件的构建方式如下:Go 删除CSV中的空行,go,Go,我正在尝试清理一个CSV文件,该文件的构建方式如下: ;Header1;Header2;Header3; ;;;; ;1;2;3; ;;;; 如何使用Go检测和删除这些“;;;;;”空行 编辑: 到目前为止我有这个(缩短) 下面的代码应该会有所帮助。为了便于理解,我对相关部分进行了评论 package main import ( "encoding/csv" "os" ) // handle error using panic fun
;Header1;Header2;Header3;
;;;;
;1;2;3;
;;;;
如何使用Go检测和删除这些“;;;;;”空行
编辑:
到目前为止我有这个(缩短)
下面的代码应该会有所帮助。为了便于理解,我对相关部分进行了评论
package main
import (
"encoding/csv"
"os"
)
// handle error using panic
func handleError(err error) {
if err != nil {
panic(err)
}
}
// empty returns true if all fields are empty
func empty(record []string) bool {
for i := range record {
if record[i] != "" {
return false
}
}
return true
}
func main() {
in, err := os.Open("in.csv")
handleError(err)
defer in.Close()
out, err := os.Create("out.csv")
handleError(err)
defer out.Close()
r := csv.NewReader(in)
{
r.Comma = ';' // Delimiter
r.FieldsPerRecord = 0 // Number of fields should match with the header
r.TrimLeadingSpace = true // Trim the leading spaces
}
w := csv.NewWriter(out)
{
w.Comma = ';' // Delimiter
}
// Read all records
records, err := r.ReadAll()
handleError(err)
// Write records that are not empty
for _, record := range records {
if !empty(record) {
_ = w.Write(record)
}
}
// Flush records in buffer
w.Flush()
}
输入:
;Header1;Header2;Header3;
;;;;
;1;2;3;
;;;;
输出:
;Header1;Header2;Header3;
;1;2;3;
到目前为止,您有什么代码?您自己做过任何研究或尝试过解决这个问题吗?
;Header1;Header2;Header3;
;1;2;3;