gpt4 book ai didi

ruby-on-rails - FasterCSV 中第二行的标题?

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

大家好,我目前正在使用 fasterCSV 解析 ruby​​ 中的 CSV 文件,想知道如何删除 CSV 上的初始数据行(初始行包含另一个生成的时间/日期信息软件包)

我尝试使用 fasterCSV.table 然后删除 row(0) 然后将其转换为 CSV 文档然后解析它

但该行仍存在于文档中。

还有其他想法吗?

fTable = FasterCSV.table("sto.csv", :headers => true)
fTable.delete(0)

最佳答案

三点建议


你能让 FasterCSV 忽略这条线吗?

您可以使用 :return_headers => true 选项跳过坏行。如果第二行不是真正的标题,那会很好用。参见 here更多

:return_headers:

When false, header rows are silently swallowed. If set to true, header rows are returned in a FasterCSV::Row object with identical headers and fields (save that the fields do not go through the converters).


用另一个工具切断线

您不需要为此使用 Ruby - 如何使用建议的解决方案之一来切碎文件 here您可以使用系统方法从 Ruby 调用单行代码。


最大的灵 active - 使用 FasterCSV 逐行解析文件

您是否考虑过直接读取文件,跳过第一行然后接受或拒绝行?在我的代码的深处是这个解析方法,它将文件视为一系列行,接受或拒绝每一行。您可以做类似的事情,但跳过第一行。

巧妙的是,您可以通过定义自己的可接受行来确定哪些行是可接受的?方法 - 仅将有效的 CSV 数据传递给可接受的?其余的被丢弃以响应异常。

      def parse(file)
#
# Parse data
#
row = []

file.each_line do |line|

the_line = line.chomp

begin

row = FasterCSV.parse_line(the_line)

ok, message = acceptable?(row)


if not ok
reject(file.lineno, the_line, message)
else
accept(row, the_line)
end

rescue FasterCSV::MalformedCSVError => e
reject(file.lineno, the_line, e.to_s)
end

end

关于ruby-on-rails - FasterCSV 中第二行的标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2918711/

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