因此,我一直在弄乱Ruby中的CSV文件,遇到了一个问题。在我的测试中,在仅包含标题行的文件上调用x = CSV.read(file,headers:true)将返回一个表,该表转换为数组时将返回[[]],并调用x .headers返回[]。我可以通过设置return_headers:true来解决此问题,但实际上我不希望文件返回其标题,我只想要标题。当我添加伪造的第二行时,x.headers实际上返回标头,并且:return_headers不需要设置为true。
这是添加一行之前和之后的一些代码,以帮助可视化该问题。
在只有标题行的csv文件中使用headers:true和return_headers:true:
a = CSV.read("June.csv", headers:true, return_headers:true) # <CSV::Table mode:col_or_row row_count:1>
a[0] # <CSV::Row "Day":"Day" "Time":"Time">
a.headers # => ["Day", "Time"]
仅标头:仅标头行的csv文件上为true:
b = CSV.read("June.csv", headers:true) #<CSV::Table mode:col_or_row row_count:1>
b[0] # => nil
b.headers # => []
仅标头:在带有伪第二行的csv文件上为true:
c = CSV.read("June.csv", headers:true) #<CSV::Table mode:col_or_row row_count:2>
c.headers # => ["Day", "Time"]
c["Day"] # => ["6/1"]
我不能依赖CSV文件,我必须始终有第二行,因为我的程序打算以此为基础。我究竟做错了什么?这是预期的行为,还是我的设置出现问题?我是否必须只读取标题,然后再读取一次才能获得我想要的行为?我已经搜寻了好一阵子,但仍然遇到麻烦
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句