2011-09-09 27 views
0

私はいくつかの領域があり、何も進歩せずに進み、何も取り除かないことを続けたCSVファイルを持っています。キャッチされている、私はまた、私は/ストリップしたくないファイルを持っている他の項目があります。単体/ csvファイルから取り除く

例:

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

私はなりたい:

/abc,, akaksdhfaiwe 
, /foo, /bar 

私はこれをどのように行うのですか?/abc/foo/barを取り除くので、gsub( '^ /'、 '')は使用できません。そして私の人生の間、私は「終わり」を見つけることができないようです。私は\ Zがうまくいくことを望んでいた。

任意の受取人ですか?

私はこれまでにかなり優れていた操作の多くのために高速なCSVを使用してきました。ルビー付き

+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) 

いずれかのshouこれをオンにLD:

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

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

それは大量のファイルです。私は大量です。したがって、記憶を読み込むことは無駄です。しかし、それは第二のものです。私はそれを行こう。ありがとうムー。 – MarkL

0

あなたが行うことができます。

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