Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javamap-Reduce分割方法_Java_Split_Mapreduce - Fatal编程技术网

javamap-Reduce分割方法

javamap-Reduce分割方法,java,split,mapreduce,Java,Split,Mapreduce,假设我们有一个.csv文件,如下所示: Country,num1,num2,remarks USA, 1, 1, string 1 USA, 1, 2, "string 2, string 3, string 1" USA, string 1 USA, string 2 USA, string 3 USA, string 1 我需要拆分每一行,以执行Map Reduce任务。 您可以看到的“问题”是,如果备注字段中有逗号,则提供者 在字符串周围插入双引号(当我用文本编辑器打开文件时可以看到双

假设我们有一个.csv文件,如下所示:

Country,num1,num2,remarks
USA, 1, 1, string 1
USA, 1, 2, "string 2, string 3, string 1"
USA, string 1
USA, string 2
USA, string 3
USA, string 1
我需要拆分每一行,以执行Map Reduce任务。 您可以看到的“问题”是,如果备注字段中有逗号,则提供者 在字符串周围插入双引号(当我用文本编辑器打开文件时可以看到双引号)。 有没有办法将备注字段分开

我的最终目的是创建具有以下值的键:

Country,num1,num2,remarks
USA, 1, 1, string 1
USA, 1, 2, "string 2, string 3, string 1"
USA, string 1
USA, string 2
USA, string 3
USA, string 1
假设我有一个名为line的变量,它包含整行字符串, 我试过这样的方法:

String [] temp;
temp = line.split(",");
但在这种情况下,temp[3]的值为
string 2
,而不是值

string 2, string 3, string 1
经过长时间的搜索,我发现了一个类似的问题

在实践中,应使用此正则表达式:

String[]tokens=line.split(“,(?=(?:[^\”]*\“[^\”]*\”*[^\“]*$)”,-1);

为了考虑<代码>“字符串2、字符串3、字符串1”<代码>作为特定字段。


感谢社区!

使用合适的CSV阅读器和
String.split(“,”)
备注字段?在
上拆分,
是poorsman CSV解析器,对于复杂数据肯定会失败。使用现有的CSV解析库。不值得为标准数据交换格式重新发明轮子。您可以选择使用电子表格编辑器打开CSV文件,将其保存为以制表符分隔的文件,然后将制表符用作使用分隔符而不是逗号