如何使用Ruby逐行将csv转换为数组?

如何使用Ruby逐行将csv转换为数组?,ruby,parsing,csv,Ruby,Parsing,Csv,输入文件如下所示: dog,white,male cat,purple,female rat,gray,male 你明白了吧?我想用ifs和诸如此类的东西来处理数据行,并在最后打印出来 感谢您,Ruby包含了一个CSV类,使解析和使用CSV变得更加简单。检查:您可以使用块的魔力来清理您的行读取代码。下面的代码将为您关闭句柄,并在没有太多额外缓冲的情况下一次获取一行 IO.foreach("animals.csv") do |line| parts = line.split(',')

输入文件如下所示:

dog,white,male cat,purple,female rat,gray,male 你明白了吧?我想用ifs和诸如此类的东西来处理数据行,并在最后打印出来


感谢您,Ruby包含了一个CSV类,使解析和使用CSV变得更加简单。检查:

您可以使用块的魔力来清理您的行读取代码。下面的代码将为您关闭句柄,并在没有太多额外缓冲的情况下一次获取一行

IO.foreach("animals.csv") do |line|
   parts = line.split(',')
   ...
end
如前所述,有一个CSV库,但是如果您的数据不复杂,没有嵌入逗号等等,那么上面的说明是合理的

还请注意,您希望与字符串“dog”进行比较,而不是与名为dog的某个变量进行比较。要使字符串用引号括起字母,否则ruby会认为它是一个变量,或者可能是一个方法调用

if currentline[0] == "dog"

为什么要重新发明轮子?你有CSV类,使用它。“如果您的数据不复杂”不是一个有效的理由,IMO.I正在使用ActiveRecord创建和获取:线程失败:inotify事件队列已溢出,有什么想法吗?没有。尝试将其作为一个新问题发布,并提供更多详细信息
if currentline[0] == "dog"
require 'csv'
CSV.foreach("animals.csv") do |row|
  puts 'dogs are cool' if row[0] == 'dog'
  puts "your animal is a #{row[0]}"
end