2016-06-24 2 views
4

Perl로 구문 분석해야하는 매우 큰 파일이 있습니다. 변경할 수없는 파일 형식은 파일이 Excel에서 CSV로 열리도록 원래 작성되었습니다. 특히이 문제를 해결하려면 각 줄의 구분 기호를 파이프 (|)로 바꿔야합니다. 일반적으로 이것은 힘든 일이 아니지만 몇 가지 문제점 (아래)이 있습니다. 솔루션을 갖고있는 동안 내 작업을 수행하는보다 효율적인 방법이 있는지 궁금합니다.Perl의 인용문 및 복수 쉼표 구분 기호 대체

  1. 데이터 자체는
  2. 각 "셀"데이터의 가치는 인용 부호로 캡슐화 (I 찾아 쉼표를 대체 할 수 없습니다 의미) 쉼표로 의견을 포함하지만 셀이 비어 있다면 다음에는 인용 부호가 없습니다 파일에

예 선 :

"Foo Bar","More Foo","More Bar",,,,,"Yet More","Comma,Separated,Statement" 

나의 현재 솔루션은 다음과 같은 코드를 찾습니다. 그것은 작동하지만, 그것은 우아하지 않고 모든 라인을 여러 번 처리해야합니다 (이 파일이 너무 커서 피하려고합니다).

# Change the delimiter 
$line =~ s/",,,,,"/|||||/g; 
$line =~ s/",,,,"/||||/g; 
$line =~ s/",,,"/|||/g; 
$line =~ s/",,"/||/g; 
$line =~ s/","/|/g; 

$line =~ s/^"//;  # Remove leading quotation mark 
$line =~ s/"$//;  # Remove trailing quotation mark 

누가 더 빠르고 우아한 솔루션을 찾을 수 있습니까?

+2

나는 이것을 사본으로 받아 들일 수 있습니다. 어떤 이유로 나는 그 스레드에서 발견 된 방법으로 문제를 고려하지 않았습니다. 매우 감사! – GrinningX

답변

관련 문제