zoukankan      html  css  js  c++  java
  • scala/java等其他语言从CSV文件中读取数据,使用逗号','分割可能会出现的问题

    众所周知,csv文件默认以逗号“,”分割数据,那么在scala命令行里查询的数据:
    在这里插入图片描述
    可以看见,字段里就包含了逗号“,”,那接下来切割的时候,这本应该作为一个整体的字段会以逗号“,”为界限进行切割为多个字段。

    现在来看看这里的_c0字段一共有多少行记录。
    在这里插入图片描述
    记住这个数字:60351行

    写scala代码读取csv文件并以逗号为分隔符来分割字段

    val lineRDD = sc.textFile("xxxx/xxx.csv").map(_.split(","))
    

    这里只读取了_c0一个字段,否则会报数组下标越界的异常,至于为什么请往下看。
    接着还是查询这个字段的有多少行
    在这里插入图片描述
    很显然,60364>60351
    这就是把一个字段里本来就有的逗号当成了分隔符,导致一个字段切割为两个甚至多个字段,增加了行数。

    所以如果csv文件的第一行本来有n个字段,但某个字段里自带有逗号,那就会切割为n+1个字段。自然就会报数组下标越界的异常了

    那就把切割规则改一下,只对引号外面的逗号进行分割,对引号内的不分割
    就是修改split()方法里的参数为:

    split(",(?=([^"]*"[^"]*")*[^"]*$)"))
    
    如果真的不知道做什么 那就做好眼前的事情吧 你所希望的事情都会慢慢实现...
  • 相关阅读:
    专家教你应对小孩鼻血不止
    爸爸去哪?
    Windows server 2008 R2 + IIS7.5,ASP网站设置
    请把这十个生命气质传给孩子
    zoj 2071 Technology Trader 最大权闭合子图
    TJU 2944 Mussy Paper 最大权闭合子图
    poj 1222 EXTENDED LIGHTS OUT 高斯消元
    codeforces 383C Propagating tree 线段树
    ubuntu 安装qq
    Kafka Manager 监控
  • 原文地址:https://www.cnblogs.com/sunbr/p/14347780.html
Copyright © 2011-2022 走看看