2016-11-07 4 views
1

Мой код выглядитДобавлять в CSV-файл, только если строка не существует

CSV.open("test.csv", "a+") do |csv| 
(0..array.count).each do 
    csv << [object1, object2, object3] 
end 
end 

Скажем, в какой-то момент в итерации, object1 имеет значение 1, object2 имеет значение 2 и object3 имеет значение 3.
Можно ли проверить в моем test.csv файл, если строка

1,2,3 

уже существует, и поэтому не добавлять ту же строку еще раз в мой файл CSV?

ответ

1
csv_file = 'test.csv' 
existing_lines = File.readlines(csv_file).map(&:strip) # remove line breaks 

CSV.open(csv_file, 'a+') do |csv| 
    (0..array.count).each do 
    data = [object1, object2, object3] 
    str = data.join(',') 
    unless existing_lines.include?(str) 
     csv << data 
     existing_lines << str 
    end 
    end 
end 
+0

undefined метод 'exclude? ' для # fabersky

+1

Извините, 'exclude?' поступает из ActiveSupport. Вы можете использовать 'if include?' В чистом Ruby. Я отредактировал ответ. –

+0

привет @ jan.zikan. что, если я хочу также удалить уже существующую строку с тем же значением для столбца? например, в CSV, например: заголовки: «имя», «возраст», «город» 1-я строка: «john», «30», ny «2-я строка:« майкл »,« 35 »,« майами »я хочу добавить новую строку «john», «31», «ny» и удалить строку с «name»: «john»? – fabersky

 Смежные вопросы

  • Нет связанных вопросов^_^