CSV解析:在特定列中搜索值并打印出包含该值的整行

时间:2019-06-11 22:53:12

标签: ruby csv

因此,几天前我已经提出了类似的问题,这使我非常想找出答案。我想要一个可以接受用户输入并在特定列中进行搜索的系统,当找到该列时,将打印出该列所在的整行。我已经定义了将在.csv中进行搜索的方法。仍然无法按预期工作。确切的错误是:

undefined method `include?' for nil:NilClass (NoMethodError)

我已经查看并查看了.csv,并尝试了针对相同问题找到的解决方案,但似乎都没有效果。

我的data.csv如下:

Name;Age;Gender
Edward;21;Male
Michael;21;a
Sarah;22;a

如您所见,我使用“ a”,以便不使用空格。

此外,我在代码中使用:col_sep => ";"以避免进一步的错误(太大了,无法将每个分号手动更改为逗号)。

我现在真的不知道该怎么办,我理解问题所在,但是找不到解决方法。

这是我的代码的样子:

require 'csv'

def find_row_in_csv(file_path, column_name, search_value)
  CSV.foreach(file_path, headers: true, :row_sep => "\r\n", :col_sep => ";").find do |row|
    row[column_name].include?(search_value)
  end
end

search_value = gets.chomp.to_s

matching_row = find_row_in_csv('data.csv', "Name", search_value)
p matching_row

我之所以使用:row_sep => "\r\n"是因为我收到了格式错误的CSV错误,但现在我已修复了该错误,似乎我没有为NilClass定义include?方法(NoMethodError),该方法我不明白,因为.csv中没有空白值。

我认为它会照常运行,因为我从我得到的最佳回复中复制了很多内容,但是我已经坚持了几天。

0 个答案:

没有答案