我正在尝试使用逗号作为分隔符来分隔csv字符串。
val string ="A,B,"Hi,There",C,D"
我无法使用,string.split(",")
因为它将拆分"Hi,There"
为两个不同的列。我可以使用正则表达式解决此问题吗?我来了scala-csv parser
我不想使用的地方。我希望有一个更好的方法来解决这个问题。我知道这不是一个小问题。如果人们可以分享他们解决此问题的方法,将很有帮助。
为此,请使用uniVocity-parsers CsvParser,而不要手动对其进行解析。CSV比您想象的要难得多,并且涉及许多极端情况。您刚刚找到了一个。简而言之,您需要一个库来可靠地读取CSV。其他Scala项目(例如spark-csv)使用uniVocity-parsers
我将在此处使用纯Java编写示例,因为我不了解Scala,但是您会明白的:
public static void main(String ... args){
CsvParserSettings settings = new CsvParserSettings(); //many options here, check the documentation
CsvParser parser = new CsvParser(settings);
String[] row = parser.parseLine("A,B,\"Hi,There\",C,D");
for(String value : row){
System.out.println(value);
}
}
输出:
A
B
Hi,There
C
D
披露:我是这个图书馆的作者。它是开源且免费的(Apache V2.0许可证)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句