我正在使用univocity 2.7.5
来解析csv
文件。到目前为止,它工作正常,并将csv
文件中的一行解析为包含n
元素的字符串数组,其中n =一行中的列数。但现在我有了一个文件,其中行以引号"
开始,解析器无法处理它。它返回一行作为字符串数组,只有一个元素,其中包含整个行数据。我试图从csv
文件中删除该引号,它工作正常,但有大约500,000行。我应该怎么做才能使它工作?
下面是我的文件中的示例行**(源文件中也有引号)**:
"100926653937,Kasym Amina,620414400630,Marzhan Erbolova,""Kazakhstan, Almaty, 66, 3"",87029845662"
下面是我的代码:
CsvParserSettings settings = new CsvParserSettings();
settings.setDelimiterDetectionEnabled(true);
CsvParser parser = new CsvParser(settings);
List<String[]> rows = parser.parseAll(csvFile);
1条答案
按热度按时间mnowg1ta1#
此处为库的作者。您在此处输入的内容是格式正确的CSV,其单个值由以下内容组成:
100926653937,Kasym Amina,620414400630,Marzhan Erbolova,"Kazakhstan, Almaty, 66, 3",87029845662
如果这一行出现在输入的中间,我认为您的输入包含未转义引号(在到达该行之前的某个地方),请尝试使用未转义引号处理设置:
例如,这可能会起作用:
settings.setUnescapedQuoteHandling(UnescapedQuoteHandling.STOP_AT_CLOSING_QUOTE);
如果没有任何效果,并且所有的行看起来都像你发布的那一行,那么你可以解析输入两次(这很糟糕,很慢,但还是可以的):
希望这个有用。