使用 Go 标准库"encoding/csv"读取 csv 文件,发现单元格内容带有双引号"时会读取失败。

2019-12-02 16:03:27 +08:00
 fatbear001

在 github 上搜索了相关问题,好像都没有解决方案,有没有大佬知道怎么解决?

2074 次点击
所在节点    问与答
6 条回复
oott123
2019-12-02 16:07:29 +08:00
至少把那行 csv 贴出来看看吧。
fatbear001
2019-12-02 16:14:07 +08:00
@oott123 数据:ALD4501PEL,ST,15+,20-DIP ( 0.300",7.62mm ),990,
zhzy
2019-12-02 16:15:10 +08:00
双引号需要转义 根据 csv 标准双引号要用两个双引号来表示或者用斜杠转义 维基百科原文:Embedded double quote characters may then be represented by a pair of consecutive double quotes,[13] or by prefixing a double quote with an escape character such as a backslash (for example in Sybase Central).
oott123
2019-12-02 16:15:42 +08:00
感觉你这数据本身也不是很规整的 csv
引号 " 替换成两个引号 "" 试试吧
diib
2019-12-02 16:25:20 +08:00
源数据不规则的话,自己写 parser 吧。
改源数据的方法也可以,但实际情况不一定允许。
ca2oh4
2021-01-07 14:13:25 +08:00
推荐处理:
//r := csv.NewReader(fs)
decoder := mahonia.NewDecoder("gbk") // 把原来 ANSI 格式的文本文件里的字符,用 gbk 进行解码。
r := csv.NewReader(decoder.NewReader(fs))

////当我们在 CSV 文件上具有 de "(双引号)值时,就会发生这种情况。
////为了避免此错误,我们应该使用 LazyQuotes Parameter 像这样:
//r.Comma = ';'
r.LazyQuotes = true

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/625132

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX