繁体   English   中英

替换带引号的字符串中的字符

[英]Replacing characters inside the quoted string

作为项目的一部分,我有一个CSV文件,其中包含用逗号分隔的值。 但是引号中的字段很少。 结果,数据没有正确加载。 例如:如果数据为== >>汽车,鹿,“熊,猫”

在上面的示例中,理想情况下应该有3列。 但由于老鼠和垫子之间存在逗号,因此将其视为4列。 字段“ rat,mat”未合并,被视为单个字段。

请建议在PIG中是否有某些东西可以解决这种情况

您可以使用apache CSV库来处理此问题

您可以尝试以下正则表达式:

看看这里,已经问过SO了,用户很好解释了。

点击这里

你可以试试这个吗?
input.csv

car,deer,"bear,cat"
car,deer,"bear,cat"

PigScript:输出格式1:

A = LOAD 'input.csv' AS line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(\\w+),(\\w+),(.*)$')) AS (col1:chararray,col2:chararray,col3:chararray);
DUMP B;

输出:

(car,deer,"bear,cat")
(car,deer,"bear,cat")

PigScript输出格式2:

A = LOAD 'input.csv' AS line;
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(\\w+),(\\w+),"(\\w+),(.*)"$')) AS (col1:chararray,col2:chararray,col3:chararray,col4:chararray);
DUMP B;

输出:

(car,deer,bear,cat)
(car,deer,bear,cat)
     public static void main(String[] args) {
        // TODO code application logic here
        String str = "c,b,\"c,d\"";
        System.out.println(str);
           if(str.contains("\"")){
              str= str.replaceAll("\"", " ");
              //System.out.println(str);
              str = str.replaceAll(" ", "");
              System.out.println(str);

           }
    }       

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM