如何重新格式化 CSV 文件以匹配正确的 CSV 格式
Posted
技术标签:
【中文标题】如何重新格式化 CSV 文件以匹配正确的 CSV 格式【英文标题】:How to reformat CSV file to match proper CSV format 【发布时间】:2012-02-05 16:50:30 【问题描述】:我有一个 Web 应用程序可以解析用户上传的 csv 文件。
部分用户上传的 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】:来自docs:
您不想做的是提供 FasterCSV 无效的 CSV。因为 CSV 格式的工作方式,解析器通常需要读取 直到文件末尾以确保字段无效。这吃一个 大量的时间和记忆。
幸运的是,当使用无效的 CSV 时,Ruby 的内置方法会 几乎总是在各方面都出类拔萃。例如,解析 不带引号的字段很简单:
data.split(",")
这会给你一个数组。如果您真的想要有效的 CSV(例如,因为您救出了 MalformedCSVError),那么有...更快的CSV!
require 'csv'
str= %qabc,hello mahmoud,this is" description, bad
puts str.split(',').to_csv
#=> abc,hello mahmoud,"this is"" description", bad
【讨论】:
这解决了未引用的问题,但是如果 csv 文件由于其他原因而格式错误,openoffice 也可以修复呢?例如:***.com/questions/9098759/…所有这些问题都有通用的解决方案吗? 只是为了澄清。 fastcsv 是 ruby 1.8 中的一个外部库,然后被包含在 ruby 1.9 中作为 csv 标准库。以上是关于如何重新格式化 CSV 文件以匹配正确的 CSV 格式的主要内容,如果未能解决你的问题,请参考以下文章