gpt4 book ai didi

ruby - fasterCsv 异常处理

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:04 24 4
gpt4 key购买 nike

我在 csv 文件中遇到 MalformedCSVError 问题。下面给出了我卡住的地方:

“# 字面上有数百个来源的“IP-to-Country”数据库可用。Man”

因为该行包含双引号。执行在此处停止异常是:FasterCSV::MalformedCSVError

我该如何处理这种情况。我也无法编辑 csv 文件..

请帮我解决这个问题。

最佳答案

那个例子真的是畸形的。引号字符看起来是双引号,但其中嵌入了双引号(应该再次用双引号转义)。你真的应该拒绝这个格式错误。

作为一个 hacky 解决方法,您可以尝试更改引号字符从 FasterCSV 的文档中,您可以传递 :quote_char => "'"并且应该可以让您访问数据,但现在您将获得双引号作为字符串的一部分 - 困惑。

真的,您不需要诉诸于编辑源数据 - 您的程序应该优雅地处理错误,通知某人并继续。

我们在 NGINX 后面以批处理模式使用 FasterCSV。当解析一行发生错误时,我们捕获异常,记下导致错误的行并继续。解析完所有行后,我们会通过电子邮件通知用户哪些行无法处理。

这样的东西对我们有用......

    io.each_line do |line|

the_line = line.chomp
begin
row = FasterCSV.parse_line(the_line)
ok, message = acceptable?(row)

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

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

end

注意接受和拒绝的处理程序,它们允许我们将接受和拒绝与解析的核心分离。

关于ruby - fasterCsv 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6593776/

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