如何检查CSV列的一致性?

How to check the CSV column consistency?

我有一个像这样的 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?

csv_validator gem 在这里会有帮助。

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

如果您不想两次读取文件,您可以记住 header 的长度,并在解析文件时检查每条记录是否具有相同数量的字段,否则会抛出异常。

require "csv"

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

p valid?("data.csv")