【发布时间】:2020-07-04 19:24:14
【问题描述】:
我有一个奇怪的问题我有这个 CSV
NAME,AGE,CITY
Bob,12,London
James,18,London
Joe,55,Manchester
Simon,21,Manchester
还有下面的代码。但是当我提取文件时,它在第一个字段名称之前带有一个空格(如下所示)
下面我尝试了字符串修剪和字符串替换,但都没有奏效。有人有什么想法吗?
func main() {
var files []string
root := "C:\\Users\\kiera\\OneDrive\\Documents\\golang\\df\\filewalk\\csvs"
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
files = append(files, path)
return nil
})
if err != nil {
panic(err)
}
for _, file := range files {
//open the file
openfile, _ := ioutil.ReadFile(file)
//cast byte slice as string
contents := string(openfile)
//get rid of whitespace
contents = strings.TrimSpace(contents)
contents = strings.ReplaceAll(contents, " NAME", "NAME")
fmt.Println(contents)
}
}
【问题讨论】:
-
您的代码只是读取原始数据,根本没有进行任何 CSV 处理。如果这是您正在执行的文字代码,那么您的输入文件在第一个标签之前有一些空白(但不是文字空格)字符。
-
非常感谢您的回复。你知道我会怎么处理吗?
-
这取决于“处理”对您意味着什么。我将从了解输入文件开始。它包含哪些数据?
-
CSV 内容与我在问题顶部传递的完全一样 - 所以绝对没有空格
-
好像notepad++添加了BOM。编写代码以剥离 BOM 或使用更好地理解 UTF-8 的编辑器。见reading files with a BOM。
标签: go