2012-11-15 5 views
2

perl을 사용하여 아래 문자열을 분할해야합니다. 자세한 내용은 아래에 나와 있습니다. CSV 파일에서 테이블에 데이터를로드해야합니다. 문자열 변수는 ""로 묶입니다. 저에게 아이디어를 제공해주세요. 펄 스크립팅을 처음 접했습니다.쉼표로 구분 된 문자열 분할 및 perl을 사용하는 텍스트 한정자

문자열 : "February 6, 2012","","","1","02/06/12","","",1,1,0

출력 :이 CSV처럼 많이 보이는

February 6, 2012 
<BLANK VALUE> 
<BLANK VALUE> 
1 
02/06/12 
<BLANK VALUE> 
<BLANK VALUE> 
1 
1 
0 
+0

Stackoverflow는 "내 코드 작성"포럼이 아닙니다. 자신이 갖고있는 것을 보여 주면 그것을 개선하는 데 도움을 줄 것입니다. –

답변

8

. 그렇다면 정규 표현식 대신 적절한 모듈을 사용하십시오. 훌륭한 Text::CSV_XS가 있습니다.

0

일반 표현식을 사용하여 분할 할 수 있습니다. 분할하려는 각 항목은 그룹의 브래킷이

^\"(.*?)\",\"\",\"\",\"(.*?)\",\"(.*?)\",\"\",\"\",(\d),(\d),(\d) 

표현과 같은 그룹에 싸여해야합니다, 당신은 코드에서 그룹을 얻을 수 있습니다.

+0

Regexes는 Text : CSV :-)와 같은 모듈을 사용하는 훌륭한 광고입니다. –

0
#!/usr/bin/perl 
use strict; 
use warnings; 

my $ac = qq("February 6, 2012","","","1","02/06/12","","",1,1,0); 

$ac=~s/\"//ig; 
my @arr = split(',', $ac); 
$arr[0] .= $arr[1]; 
print $arr[0] . "\n"; # the date is February 6, 2012 

# print other elements 
for (my $i=2; $i < @arr; $i++) { 
    if ($arr[$i] eq '') {print "<BLANK VALUE>\n";} 
    else {print $arr[$i] . "\n";} 
} 
+0

언제든지 쉼표가 따옴표 안에 있습니까? 그렇지 않으면 쉼표로 분리하고 모든 필드에서 선행 및 끝 인용 부호를 제거하십시오. 이 파일이 CSV 파일입니까? 그렇다면 Text :: CSV 모듈을 사용하여 더러운 작업을 수행하십시오. –

관련 문제