2016-06-14 10 views
0
Reader in = new FileReader(dataFile); 
Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRecordAsHeader().withIgnoreEmptyLines(true).withTrim().parse(in); 

     // Reads the data in csv file until last row is encountered 
     for (CSVRecord record : records) { 

      String column1= record.get("column1"); 

を使用してCSVファイルを読み込むここでは、CSVファイルのcolumn1の値が1234557.」のようなものですので、私はコラムを読んWHEそれは開始時に引用符でフェッチされたときに二重引用符を省略します。どのような方法があります。 "" "0996108562"、 "" "204979956"apacheのコモンズのcsvに

+1

このスクリーンダンプは無意味です。 Excelのスナップショットのように見えます。あなたのコードはそれを読んでいないので、 'dataFile'で参照されるファイルの実際の内容を見せてください。テキストとして質問に貼り付け、画像を挿入しないでください。しかし、おそらく '' "0996108562"、 "" "204979956" 'などの2つのCSV引用値が含まれています。値の最初の文字は引用符です。 CSVパーサーはそれらを削除しません**。そうではありません。これは数値データをテキストとして入力するためのExcelのクォークであり、CSVとは関係ありません。 *自分で削除するか、Excelに追加しないでください。* – Andreas

答えて

0

このMCVE(Minimal, Complete, and Verifiable example)とcommons-csv-1.4.jarを使用して再現することができません::

String input = "column1,column2\r\n" + 
       "1,Foo\r\n" + 
       "\"2\",\"Bar\"\r\n"; 
CSVFormat csvFormat = CSVFormat.RFC4180.withFirstRecordAsHeader() 
             .withIgnoreEmptyLines(true) 
             .withTrim(); 
try (CSVParser records = csvFormat.parse(new StringReader(input))) { 
    for (CSVRecord record : records) { 
     String column1 = record.get("column1"); 
     String column2 = record.get("column2"); 
     System.out.println(column1 + ": "+ column2); 
    } 
} 
Apacheのコモンズのcsvでcsvファイルからのもの

サンプル・データをスキップします

出力:

1: Foo 
2: Bar 

"2""Bar"前後に引用符が削除されました。

+0

ご協力いただきありがとうございます。しかし、私はコードを試して、それdoesnt仕事。私は質問を更新し、csvの見た目のサンプルイメージをアップロードしました。 –

+0

私は読んでいる間、最初にそこにある余分な引用符を望みません。既存のコードでは、その引用符で値を読み取ります。 –

+0

値*は*明示的に引用符を持つため。先頭の見積もりはCSVとは関係がないため、CSVパーサは見積もり*を保持しています*。見積もりを削除すると、CSVパーサに問題があります。 – Andreas

0

私が正しくあなたの条件を理解していれば、あなたがApacheのStringEscapeUtils.AsからドキュメントをunescapeCsvを使用する必要が言う:

値は二重引用符で囲まれ、カンマが含まれている、改行>>された場合二重引用符を使用すると、引用符は削除されます。

任意の二重引用符で囲まれたエスケープ文字(二重引用符のペア)は、一重引用符だけにエスケープされます。

値が二重引用符で囲まれていないか、コンマ、改行または二重引用符が含まれていない場合、文字列値は変更されずに返されます。

+0

編集した質問を確認してください。これで要件を理解できるようになります。 –

関連する問題