Java Map Reduce Split方法

问题描述 投票:0回答:1

假设我们有一个像下面这样的.csv文件,我需要为Map-Reduce任务拆分每一行,如你所见,如果在备注字段有逗号,文件的提供者会在字符串周围插入双引号(可以看到)。

Country,num1,num2,remarks
USA, 1, 1, string 1
USA, 1, 2, "string 2, string 3, string 1"

我需要为Map-Reduce任务拆分每一行。"问题 "是,如果在备注字段有逗号,文件的提供者会在字符串周围插入双引号(当我用文本编辑器打开文件时可以看到双引号)。

我的最终目的是创建键值,如下图所示。

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
java split mapreduce
1个回答
1
投票

经过(长小时)的搜索,我发现了一个类似的问题。此处 有帮助的。

在实践中,应该使用这个regex 。

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

以便考虑 "string 2, string 3, string 1" 作为一个特定的领域。

谢谢社区

© www.soinside.com 2019 - 2024. All rights reserved.