csv|导入csv文件时,如果最后一列没有数据,读取出来的集合比抬头字段少,和数据中包含","如何处理?
当时项目是需要导入csv文件进行处理后存入数据库持久化,在读取一行数据时,遇到了如下两个问题:
1, 因为csv文件每列数据读取出来后是一串由","号分隔的字符串,所以想将字符串变为数组(集合)时用.split(",")进行分隔,但发现一个问题,原始数据中,如果存在","时,原本一条数据就会被分隔成两条,从而出现错误.解决办法是使用.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)").这样我理解的是,使用了正则的原理来匹配,使在""中的","不被识别为分隔的",",从而不会进行错误的分隔.
【csv|导入csv文件时,如果最后一列没有数据,读取出来的集合比抬头字段少,和数据中包含","如何处理?】
2,csv文件最有一列如果没有数据,读取出来的一行数据可能是这样"A,B,C, "但使用.split时,它会自动把最后的一个空数据处理了,转换为数组后为[A,B,C],所以可以使用.split(",",-1),这样就可以把最后一个空字符也识别出来,数组为[A,B,C, ]
推荐阅读
- django-前后端交互
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 使用composer自动加载类文件
- ssh生成公钥秘钥
- 没有导入future这个module
- Android系统启动之init.rc文件解析过程
- R|R for data Science(六)(readr 进行数据导入)
- 微信小程序基础知识
- 误删/清空.bashrc文件/内容
- JavaScript|vue 基于axios封装request接口请求——request.js文件