如何重新格式化 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 格式的主要内容,如果未能解决你的问题,请参考以下文章

pycharm如何以表格格式编辑CSV文件?

csv格式文件用excel打开身份证显示错误

登录csv文件的正确方法是啥?

如何重新格式化 CSV 中的日期以仅显示 MM/YYYY

以正确的格式将生成的 CSV 保存到服务器作为下载

Scrapy 管道以正确的格式导出 csv 文件