2010-09-30 37 views
2

我正在使用Text :: CSV解析一個csv文件。由於某些不良字符,並非所有行都能被解析。
Text :: CSV文檔說: 如何在Perl中讀取包含非ASCII字符的CSV文件?

CSV字段中的允許字符包括0x09(製表符)和包含範圍0x20(空格)至0x7E(代字號)。
如何過濾儘可能容易的任何不允許的字符?

回答

9

而是篩選出「壞」的字符,你可能想使用binary標誌告訴Text::CSV停止執行其ASCII唯一的規則:

my $csv = Text::CSV->new ({ binary => 1 }); 

如果你想讀取文件這是非ASCII字符集(例如Latin-1或UTF-8),您應該查看Text::CSV::Encoded模塊。

+0

+1。看,我認爲這不可能是Perl的csv解析器的限制。 – 2010-09-30 06:15:55

+0

如果會在文檔中提到它會很好。文檔中提到了 – weismat 2010-09-30 08:02:16

+3

二進制文件。 – MkV 2010-09-30 08:23:46

0
$subject =~ s/[^\x09\x20-\x7E]+//g; 

將刪除所有這些字符。

但是,這似乎是一個奇怪的限制什麼是允許的CSV文件。我還沒有看到一個csv解析器,但它無法處理,例如元音變音和其他非ASCII字符。不過,我不認識Perl。

相關問題