如何重新格式化CSV文件以匹配正确的CSV格式

时间:2012-02-05 16:50:31

标签: ruby csv openoffice.org fastercsv

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

某些用户上传的csv文件与提及here

的正确csv格式不符

例如:

abc,hello mahmoud,this is" description, bad

这应该是

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

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

是否有任何ruby库可以重新格式化csv文本以使其格式正确?

1 个答案:

答案 0 :(得分:2)

来自docs

  

您不想做的是提供FasterCSV无效的CSV。因为   CSV格式的工作方式,解析器通常需要读取   直到文件结束,以确保字段无效。这吃了   很多时间和记忆。

     

幸运的是,使用无效的CSV时,Ruby的内置方法会   几乎总是在各方面都优越。例如,解析   非引用字段非常简单:

     

data.split( “”)

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

require 'csv'
str= %q{abc,hello mahmoud,this is" description, bad}
puts str.split(',').to_csv 
#=> abc,hello mahmoud,"this is"" description", bad