如何检查CSV列的一致性?

时间:2015-01-06 03:22:11

标签: ruby-on-rails ruby csv

我有一个CSV文件,如:

Header:  1,2,3,4
content: a,b,c,d,e
         a,b,c,d
         a,b
         a,b,c,d,d

我是否可以使用任何CSV方法轻松验证列的一致性,而不是 逐行解析CSV?

2 个答案:

答案 0 :(得分:0)

csv_validator gem会对此有所帮助。

答案 1 :(得分:0)

必须以这种或那种方式读取整个文件。 这是一种相对简单的方法。首先读取文件并将其转换为数组,然后根据长度(每行的字段数)将其映射到另一个数组。如果长度始终相同,则检查此数组。

如果您不想阅读该文件两次,您可以记住标题的长度,并且在解析文件时检查每条记录是否具有相同数量的字段,否则请输入一个例外。

require "csv"

def valid? file
  a = CSV.read(file).map { |e|e.length  }
  a.min == a.max
end

p valid?("data.csv")