如何检查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")
我有一个像这样的 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")