我在csv文件MalformedCSVError文件.And中遇到了.And问题,下面给出了我被困在其中的行:
#从字面上看,有数以百计的“IP到国家”数据库。
因为行包含在这里停止的双quote.Execution,所以例外是: FasterCSV::MalformedCSVError
我如何处理这种情况,我也不能编辑csv文件。
请帮帮我。
发布于 2011-07-06 09:24:04
那个例子确实是畸形的。引号字符看起来是双引号,但里面有嵌入的双引号(应该再次用双引号转义)。你真的应该以畸形为由拒绝这件事。
有点麻烦--围绕,您可以尝试从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注意要接受和拒绝的处理程序,这允许我们将接受和拒绝与解析的核心分离开来。
https://stackoverflow.com/questions/6593776
复制相似问题