2012-11-15 171 views
0

我正在使用opencsv來讀取csv文件。有一段時間,csv文件中有單引號或雙引號。我如何在不更改csv文件本身中的數據的情況下閱讀它們。opencsv轉義單引號和雙引號

現在,如果我用兩個單引號替換單引號,它可以很好地工作,與雙引號相同,用兩個替換單個引號,它就可以工作。但我不想觸摸源文件。

該代碼訪問的是如下

CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(file), "UTF-8"), delimiter,'\"',0); 
data = a1;b1;c1;hello"world;d1;e1 
     a2;b3;c2;hello"world;d2;e2 
; is the delimiter 

這樣做的結果是下一行,其還包含一個雙引號被跳過,所有奇數行被插入其中作爲偶數行被跳過

在此先感謝

+0

請寫下您的文件閱讀代碼,以便我們可以對其進行修改 –

+0

您可以更詳細地描述您所看到的行爲,還是提供一個示例輸入/輸出? –

+0

我不確定opencsv是如何運作的。但是,當你不想手動執行此操作時,可以將該文件作爲預處理讀取,然後執行數據按摩,然後將該字符串讀取器提供給您的opencsv。這是一個乾淨的方法,但是當你有一個限制時,你必須解決它。 – muruga

回答

1

使用javacsv結束。沒有任何問題

1

解決方案1:你可以做的一件事情,假設你不想在你的輸出文件中使用雙重課程/單個課程。

  1. 閱讀完整文件並用空格替換所有不需要的特殊字符。 (這是簡單的使用正則表達式)
  2. 現在使用CSVReader讀取文件。

解決方案2:如果要保留所有特殊字符,請在特殊字符前加一個「\」反斜槓。然後閱讀它。