나는 ... 변수 펄 분할 CSV 라인
# sample data
"100-001","Bla Bla, Bla, Bla","","",0.00000,"W1",6.000,0.000
내가 이것을 시도했지만 작동하지 않을 수 있도록 숫자 필드 ""없는
으로 CSV 라인을 분할 필요($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) = split(/\","/);
감사합니다 ...
나는 ... 변수 펄 분할 CSV 라인
# sample data
"100-001","Bla Bla, Bla, Bla","","",0.00000,"W1",6.000,0.000
내가 이것을 시도했지만 작동하지 않을 수 있도록 숫자 필드 ""없는
으로 CSV 라인을 분할 필요($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) = split(/\","/);
감사합니다 ...
이 작동됩니다
($var0,$var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8) =
split(/(?<="|[0-9]),(?="|[0-9])/);
?<=
는 파서를 사용해야하는 내다 주장 CSV를 들어첫 번째 데이터 요소를''100-001 ''("100-001"대신에)으로 변경하고 다른 많은 c.s에서 작동하지 않으면 ** 작동하지 않을 것입니다. 정규 표현식으로 csv를 구문 분석하는 것은 거의 _rocket science_, Friedls [Regex Book] (http://books.google.de/books?id=sshKXlr32-AC&lpg=PP1&hl=de&pg=PP1#v=onepage&q=false) 한 장] (http://books.google.de/books?id=sshKXlr32-AC&lpg=PP1&hl=de&pg=PA213#v=onepage&q&f=false). –
@rubberboots 그건 ** ** 정확합니다. 이는 OP가 제공 한대로 쉼표가 포함 된 CSV 필드의 규칙을 위반하게됩니다. 그의 데이터 세트가 일종의 논리를 따른다고 가정해야합니다. OP는 귀하의 데이터에 견줄만한 견적이 있습니까? 제공된 입력에 대해 – ZnArK
을 입력하면 정규식이 작동합니다. 또 다른 경계 사례는 쉼표'... ","... "또는'csvtext, csvtext' 주위의 _whitespace_입니다. –
lookbehind 주장
?=
이다. Text :: CSV가 확실합니다. 모듈을 설치하기가 어려울 경우 Text::CSV_PP
이라는 Pure Perl 구현을 사용할 수 있습니다. 파일에 붙여넣고 사용하십시오. 문제 해결됨. 다른 공격 방법은 핵심 모듈 Text::ParseWords
을 사용하는 것입니다.이 모듈은 괜찮은 CSV 구문 분석을 수행 할 수 있습니다.
#!/usr/bin/env perl
use strict;
use warnings;
use Text::ParseWords;
print "$_\n" for parse_line(',', 0, '"100-001","Bla Bla, Bla, Bla","","",0.00000,"W1",6.000,0.000');
좋은 해결책 !! – ZnArK
Text :: CSV를 살펴 보셨습니까? – Tim
문자열 "작동하지 않습니다"는 Perl에서 내장 된 오류 메시지가 아닙니다. –
Text :: CSV 사용 - 모두 완료되었습니다. –