Как мне написать скребок файла TSV, где "если строка содержит х, то сохранить"?

Я хочу открыть файл TSV (значение, разделенное табуляцией) и сохранить определенные строки в новый файл CSV (значение, разделенное запятыми).

Если строка содержит 'NLD' в поле с заголовком "Actor1Code" я хочу сохранить строку в CSV; если нет, я хочу перейти к следующей строке. Это то, что я пока имею, но, видимо, этого недостаточно:

require 'csv'

CSV.open("path/to.csv", "wb") do |csv| #csv to save to
  CSV.open('data.txt', 'r', '\t').each do |row| #csv to scrape
    if row['Actor1Code'] == 'NLD'
      csv << row
    else
    end
  end
end

1 ответ

Решение

Вы уверены, что звоните CSV.open правильно? Документация предполагает, что аргументы передаются в виде хэшей:

CSV.open('data.txt', 'r', col_sep: "\t")

Ошибка, которую вы видите, вероятно, является результатом '\t' интерпретируется как хеш и ссылается с [],

Другие вопросы по тегам