Как мне написать скребок файла 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'
интерпретируется как хеш и ссылается с []
,