CSV(逗号分隔值)是用纯文本保存表格数据的格式:每行一条记录,字段之间用逗号分隔。下面重点说明标准库用法与示例。
CSV在 Go 中的写法
下面是 Go 中处理CSV的常用写法:
r := csv.NewReader(file)
records, err := r.ReadAll()
w := csv.NewWriter(os.Stdout)
w.Write([]string{"名称", `他说"好"`})
w.Flush()运行前确认输入的字符集(推荐 UTF-8),并用几组已知样例核对结果。
示例
输入:key;value | 前后空格 ;x
写成 CSV结果:
key,value
前后空格 ,x
说明:按 RFC 4180:含逗号、引号、换行的字段用双引号包裹,内部引号写成两个。
工作原理
解析器逐字符读取:遇到逗号结束一个字段,遇到换行结束一条记录;如果字段以双引号开头,就一直读到配对的结束引号为止,其中的逗号和换行都属于字段内容,"" 还原为一个 "。
规则说明
- RFC 4180 规定行尾用 CRLF,但大多数程序也接受 LF
- 每行字段数应相同
- 字段前后的空格属于内容的一部分
- 是否有表头需要双方约定
常见问题
【字段里有逗号怎么办?】用双引号把整个字段包起来。
【为什么 000123 变成了 123?】Excel 自动当作数字处理,导入时把该列设为“文本”。
【CSV 和 TSV 有什么区别?】TSV 用制表符分隔,字段里很少出现制表符,解析更简单。
处理含个人信息的数据时,请注意保护隐私。
标签: 文本处理
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。