我有一个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?
答案 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")