2011-06-22 107 views
0

每當我嘗試讀取.csv文件中的一行時,它將停止將該行視爲單行並將其存儲在多個數組中,應該只有一行。我看到的是當我讀取一個.csv文件時,它似乎包含一些回車/這些奇怪的方塊,當我在記事本中打開它。我想從文件中刪除這些字符,這樣我就可以正確讀取.csv而不會退出太早。我將如何去用perl腳本來做這件事。從excel中刪除換行或回車從perl

+0

如果沒有看到您遇到問題的.csv格式的示例並且確切地說是哪些字符導致Excel問題,則很難回答。有了這些信息,編寫perl腳本就很容易去除.csv中有問題的字符。 – fnokke

+0

你如何「閱讀」文件?您是使用[Text :: CSV](http://search.cpan.org/dist/Text-CSV)還是[Text :: CSV_XS](http://search.cpan.org/dist/Text-CSV_XS) ? – runrig

回答

1

您可以使用perl中的chomp()函數清理尾隨空白。您可以使用這樣的事情的Chomp所有尾隨空白,並用一個單一的換行符替換爲:

perl -ne 'while(chomp) { } print "$_\n";' filename.csv 
+1

'-p'選項會自動打印,如果您想進行手動打印,請改用'-n'來避免混淆。或者做'$ _。=「\ n」;' – TLP

+0

正確!謝謝。 (編輯反映。) –

0

如果你想閱讀整個文件作爲一條線,只需禁用輸入記錄分隔符:

local $/; 
my $file = <>; 

也就是說,如果你想使用perl中的數據。如果你只是想改變其他程序使用的輸入文件,並且不關心換行/回車:

perl -pi.bak -we 's/[\r\n]+//g' input.csv 

這將做input.csv就地編輯和保存一個備份在input.csv.bak。請注意,如果您運行此命令兩次,備份將被覆蓋,因此請在其他位置保存適當的備份。

我只會推薦這個,如果你知道這些符號不應該在那裏。