【问题标题】:ingest csv space before field name在字段名称之前提取 csv 空间
【发布时间】: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


【解决方案1】:

如果您使用 notepad++、notepad、netbeans 等,如果您将文件保存为 utf-8 它在文件的开头添加隐藏字符(BOM)。 只需更改您的 IDE 或禁用 BOM。 例如在记事本++中,您可以按照此说明进行操作https://www.ibm.com/support/pages/how-remove-bom-any-textxml-file

这个问题大多发生在 Windows 中。

【讨论】:

  • 再次感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2022-08-18
相关资源
最近更新 更多