2012-11-15 7 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 : 모든 특수 문자를 유지하려면 특수 문자 앞에 "\"백래시를 넣으십시오. 그것을 읽으십시오.

관련 문제