извлечение единственного числа / из файла CSV - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть CSV-файл, в котором есть несколько областей, в которых / ничего не происходит и не обрабатывается ничем, что я хотел бы удалить. Суть в том, что у меня также есть другие элементы в файле, которые имеют / которые я не хочу вырезать.

пример:

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

Я бы хотел быть:

/abc,, akaksdhfaiwe
, /foo, /bar

Как мне это сделать? Я не могу использовать gsub ('^ /', ''), потому что он удалит / abc / foo / bar. И для моей жизни я не могу найти «конец». Я надеялся, что \ Z сработает, не повезло.

Есть ли кто-нибудь?

Я использовал более быстрые CSV для многих манипуляций, которые были довольно хорошими до сих пор.

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Если ваш файл не такой большой, тогда вы можете убрать его в память во время очистки, а затем записать его снова:

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)

Любой из них должен превратить это:

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

в

/abc,"", akaksdhfaiwe
"", /foo, /bar
0 голосов
/ 09 сентября 2011

С ruby ​​вы можете сделать:

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