gpt4 book ai didi

Ruby 1.9.3 - CSV.table 如何知道 CSV 文件中是否没有 header ?

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:01 24 4
gpt4 key购买 nike

我一直在用 CSV.table 做一些测试。我有两个几乎相同的小 CSV 文件,但其中一个缺少标题行。

当我对带有标题行的 CSV 文件运行 CSV.table 时,一切都按预期进行。

当我针对没有标题行的 CSV 文件运行它时,我得到:

NoMethodError: undefined method `encode' for nil:NilClass

我用不同类型的数据、不同类型的 header 尝试了这个,并得到了相同的结果。

我很好奇 CSV.table 的魔力。如果我使用 CSV.parse 并将标题设置为 true,那么无论如何它总是使第一行成为标题。所以,我一直在使用 CSV.table 来检查导入的 CSV 文件是否有标题行,但我对此不太满意,因为我不知道它是否或何时会或不会按照我使用的方式工作。

begin
CSV.table(csv_file_path)
rescue
# Add error to log or something.
end

有人知道吗?

附言我已经通读了它以及它在每种方法上提供的源代码 - http://www.ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html

最佳答案

不涉及任何魔法,一般情况下它对您不起作用。

如你所见from the source , table 字面上只是调用 readheaders: true。但它也将 header 转换为符号 (header_converters: :symbol),这是它看起来有效的关键。

没有标题会出现错误,因为第一行数据中有一个空白列(类似于 a,b,,d,e)。空白被读入为 nil,并且由于 nil 无法转换为符号,所以它爆炸了。

尝试使用一些第一行没有空白的数据 - 您会看到 table 会像其他任何方法一样将该行数据视为标题。

关于Ruby 1.9.3 - CSV.table 如何知道 CSV 文件中是否没有 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com