- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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);
最佳答案
这里是该库的作者。您的输入是一个格式良好的 CSV,其中单个值包括:
100926653937,Kasym Amina,620414400630,Marzhan Erbolova,"哈萨克斯坦, 阿拉木图, 66, 3",87029845662
如果该行出现在您输入的中间,我想您的输入有未转义的引号(在您到达该行之前的某个位置)。尝试使用未转义的引号处理设置:
例如,这可能有效:
settings.setUnescapedQuoteHandling(UnescapedQuoteHandling.STOP_AT_CLOSING_QUOTE);
如果没有任何效果,并且您的所有行看起来都像您发布的行,那么您可以解析输入两次(这很糟糕且缓慢,但会起作用):
CsvParser parser = new CsvParser(settings);
parser.beginParsing(csvFile);
List<String[]> out = new ArrayList<>();
String[] row;
while ((row = parser.parseNext()) != null) {
//got a row with unexpected length?
if(row.length == 1){
//break it down again.
row = parser.parseLine(row[0]);
}
out.add(row);
}
希望这有帮助。
关于java - 如果整行以引号 "开头,Univocity CSV 解析器会粘合整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169596/
我有一个位于屏幕宽度 15% 处的 div。单击时,该宽度增加到 100%。它基本上是一个弹出式内容区域。 为了以良好的响应方式将原始 15% 宽度的图标居中,它们被设置为: .parent po
我有几个复杂 查询(使用子查询等...)并希望使用 OR 或 AND 语句将它们粘合在一起。 例如: where1=table.where(...) where2=table.where(...) 我
我是一名优秀的程序员,十分优秀!