【发布时间】:2014-08-07 19:39:02
【问题描述】:
我确信这是微不足道的,但在我拔掉头发的年龄之后,是时候让你们这些友好的 SO 人来拯救我了。
我想对正在使用 CSV 类读取的 CSV 文件进行操作,如下所示:
CSV.foreach(@path_to_file) do |row|
#doing stuff here
end
但是,该文件在标题上方有 5 行需要删除(遇到这些行时的 foreach 方法 barfs)。
我猜我可以在没有前 5 行的情况下读取文件并重新组装,但我确信有一种更优雅的方式来做到这一点。
CSV 方法不起作用的原因是前 5 行是 CSV 类不喜欢的字符;它返回CSV:MalformedCSVError: Illegal quoting in line 3。
所以我认为我不能使用 CSV 类,除非我可以让它在它尝试解析 CSV 之前删除这些行。
【问题讨论】:
-
除了
foreach之外还有其他方法,比如open本身,它给你更多的灵活性。 -
请参阅我上面的编辑,详细说明问题:问题
-
如果你想处理一个非 CSV 文件,你需要手动读取它,去掉前五行,重新组合,然后将它转储回 CSV 解析器。起初您似乎在描述的是省略了前五行其他 CSV 数据。
-
如果它是一个 CSV 文件,也许你没有把它当作正确的字符编码来阅读。我们无法确定,因为您没有提供有问题的线路,但这确实很容易发生。
-
不,它只是文件顶部的一堆 cmets,并且鉴于 CSV 没有标准的注释行方式,因此必须对其进行预处理有点痛苦.