2011-09-09 41 views
0

我有一個csv文件,其中有幾個區域在哪裏/什麼都不進行,並且我不想去掉任何東西。問題在於,我還在文件中有其他項目,這些項目有一個/我不想去掉的項目。從csv文件剝離單數/

一個例子:

/abc, /, akaksdhfaiwe 
/, /foo, /bar 

我想是:

/abc,, akaksdhfaiwe 
, /foo, /bar 

我該怎麼辦呢?我不能使用gsub('^ /',''),因爲它會去掉/ abc/foo/bar。而對於我的生活,我似乎無法找到一個'結束'。我希望\ Z會工作,沒有運氣。

任何接受者?

我一直在使用fasterCSV了很多操縱的這一直是非常偉大的,到目前爲止。

+0

嘗試'sed中的@ /,@,@ g'' – yhager

+0

哦,你想留在紅寶石....(不能編輯上述評論由於某種原因) – yhager

回答

0

如果你的文件沒有那麼大,那麼你可以啜食入內存,同時清除它,然後重新寫出來:

clean = [ ] 
CSV.open(your_csv).each { |r| csv << r.map { |e| e.sub(/^\s*\/$/, '') } } 
out = CSV.open(your_csv, 'wb') 
clean.each { |r| out << r } 
out.close 

如果你不知何故有一個難以置信的海量CSV文件,一次不會適合內存:

out = CSV.open('tempfile.csv', 'wb') 
CSV.open(your_csv).each { |r| out << r.map { |e| e.sub(/^\s*\/$/, '') } } 
out.close 
File.rename('tempfile.csv', your_csv) 

要麼LD把這個:

/abc, /, akaksdhfaiwe 
/, /foo, /bar 

/abc,"", akaksdhfaiwe 
"", /foo, /bar 
+0

這是一個MASSIVE文件。我的意思是,MASSIVE。因此,讀入記憶是不行的。但那第二個。我會放棄它。謝謝穆。 – MarkL

0

使用Ruby,你可以這樣做:

"/asdf /, /fdsa".gsub("/,", ",")