2017-06-24 51 views
0

78400行(25MB)のcsvファイルがあります。javaを使用してcsvファイルの無効な二重引用符文字列をスキップする方法は?

行ごとにcsvファイルを読み込むと、2行目に1列にエラーがあります。

バックスラッシュ文字が含まれています。

この列を読むと、csvファイルの残りの列がすべて1列として読み込まれます。

"CDE","456","6346","testdata2","MyData2","ClassB" 
"ABC","123","4567\","testdata","MyData","ClassA" 
"CDE","456","6346","testdata2","MyData2","ClassB" 

Javaでラインセパレータを使用してその行をスキップする方法はありますか?

+2

質問を編集して、このファイルの読み取りと解析のための現在のコードを表示してください。 – Kenster

+0

ファイルを修正するだけではどうですか? – Henry

+0

現在の形式では、問題がなぜ発生するのかは不明です。ファイルを読む場所に配置する必要があります。ですから、 'parsing step'を見せてください。あなたは解析するために任意のライブラリを使いますか?列を読むには? '、'、 '' ... ... ''で区切っていますか? – Zabuza

答えて

0

あなたは言葉に行を分割することによって確認した後、あなたは脱出を特定し、特別にそれを処理することができますcharとして

String line=br.readline(); 
String words =line.split(","); 
char[] word=words.toCharArray(); 
boolean escape=(word=='\'); 

を使用して\を同定する方法を書くことができます。

0

openCSVを使用している場合は、パーサーをバックスラッシュ以外のエスケープ文字で定義します。エスケープ文字が必要ない場合は、ICSVParser.NULL_CHARACTERを使用できます。また、3.9バージョンのopenCSVを使用している場合は、RFC4180Parserを使用できます。

RFC4180ParserBuilder rfc4180ParserBuilder = new RFC4180ParserBuilder(); 
ICSVParser rfc4180Parser = rfc4180ParserBuilder.build(); 
CSVReaderBuilder builder = new CSVReaderBuilder(sr); 
CSVReader reader = builder.withCSVParser(parser).build(); 
関連する問題