0

我有一个解析用户上传的 csv 文件的 Web 应用程序。

一些用户上传的 csv 文件与此处提到的正确 csv 格式不匹配

例如:

abc,hello mahmoud,this is" description, bad

这应该是

abc,hello mahmoud,"this is"" description", bad

当我使用 ruby​​ fastercsv库解析错误的 csv 时,它失败了。但是,当我通过excel 或 openoffice打开文件时,它会成功

是否有任何 ruby​​ 库可以重新格式化 csv 文本以将其置于正确的格式?

4

1 回答 1

2

文档

您不想做的是提供 FasterCSV 无效的 CSV。由于 CSV 格式的工作方式,解析器通常需要读取到文件末尾以确保字段无效。这会占用大量时间和内存。

幸运的是,当使用无效的 CSV 时,Ruby 的内置方法几乎总是在各个方面都更胜一筹。例如,解析非引用字段很简单:

data.split(",")

这会给你一个数组。如果你真的想要有效的 CSV(因为你救出了 MalformedCSVError),那么有...更快的CSV!

require 'csv'
str= %q{abc,hello mahmoud,this is" description, bad}
puts str.split(',').to_csv 
#=> abc,hello mahmoud,"this is"" description", bad
于 2012-02-05T17:28:47.157 回答