【问题标题】:How to reformat CSV file to match proper CSV format如何重新格式化 CSV 文件以匹配正确的 CSV 格式
【发布时间】: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 文本以使其成为正确的格式?

【问题讨论】:

    标签: ruby csv openoffice.org fastercsv


    【解决方案1】:

    来自docs:

    您不想做的是提供 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
    

    【讨论】:

    • 这解决了未引用的问题,但是如果 csv 文件由于其他原因而格式错误,openoffice 也可以修复呢?例如:stackoverflow.com/questions/9098759/…所有这些问题都有通用的解决方案吗?
    • 只是为了澄清。 fastcsv 是 ruby​​ 1.8 中的一个外部库,然后被包含在 ruby​​ 1.9 中作为 csv 标准库。
    猜你喜欢
    • 2020-10-28
    • 2015-12-07
    • 2018-12-08
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2017-04-19
    • 2016-10-04
    • 2016-01-16
    相关资源
    最近更新 更多