2017-10-11 17 views
1

Univocity CSVを使用して引用符付きのCSVを解析しようとしていますが、解析後に一部の値に近い引用符がありません。Univocity CSV:解析後の引用符がない

CSV: 
ACCT,NAME,AGE,ADDRESS 
700,GINI,23,"AB,ECITY-1" 
800,HANNAH,30,"AB,ECITY-1" 
900,IAN,40,"XYZ,ECITY-1" 
1900,LYDIA,40,"XYZ,ECITY-1" 

出力:

[GINI, "AB,ECITY-1] 
[HANNAH, "AB,ECITY-1] 
[IAN, "XYZ,ECITY-1] 
[LYDIA, "XYZ,ECITY-1] 



CsvParserSettings settings = new CsvParserSettings(); 
settings.getFormat().setLineSeparator("\n"); 
settings.setKeepQuotes(true); 
settings.setQuoteDetectionEnabled(false); 
settings.trimValues(true); 
settings.excludeFields(excludeHeaders.split("ACCT,AGE")); 
CsvParser baseFileParser = new CsvParser(settings); 
String[] baseRow; 
baseFileParser.beginParsing(baseFile); 
while((baseRow = baseFileParser.parseNext())!= null){ 
     System.out.println(Arrays.toString(baseRow)); 
} 

は、私が何をしないのです。出力に終値が表示されないのはなぜですか?答えmyslef見つかり

答えて

1

は...

settings.getFormat().setLineSeparator("\n"); 

コードを以下の行を削除する必要がありました上記の行が

0

削除された場合は正常に動作しますが、バージョン2.5.8を使用していますか?そうでない場合、これは最近に関連するように見えます。ちょうど更新し、それは動作します。

少し説明:

あなたのケースでは、あなたがsettings.getFormat().setLineSeparator("\n");を設定した場合、バグが現れますが、入力ファイルは、セパレータとして\r\nを持っています。 \rは、パーサによって空白として扱われ、バグを引き起こします。

settings.getFormat().setLineSeparator("\n");を削除したのはWindows用の場合、パーサーが使用するデフォルトの行区切り文字は\r\nです。これにより、行末の末尾に空白がないため、バグを回避できます。

関連する問題