【问题标题】:How to pre-process CSV data for FasterCSV?如何为 FasterCSV 预处理 CSV 数据?
【发布时间】:2011-01-25 14:07:15
【问题描述】:

为我们的小应用创建批量上传功能时,我们遇到了大量问题。我们正在使用 FasterCSV gem 将数据上传到 MySQL 数据库,但 Faster CSV 的要求如此复杂和精确,以至于它经常因格式错误的 CSV 错误和超时错误而中断。

csv 文件通常是由用户从他们的网站或 Microsoft Word 文档中粘贴文本创建的,因此期望数据中永远不会出现奇怪的字符(如智能引号或重音符号)是不合理的。此外,用户也不容易确定他们的数据对于 FasterCSV 是否足够完美。我们需要找到一种方法来自动为他们修复它。

在让 FasterCSV gem 处理数据之前,有没有好的方法或可靠的工具来预处理 CSV 数据以修复数据中的任何细节?

【问题讨论】:

  • 这真的取决于。您遇到了什么样的错误?
  • 大部分是来自 Word 的智能引号以及来自 Word 或 HTML 的偶尔的重音字符或特殊字符。有时是流弹。只是将多段文本粘贴到 Excel 单元格中时得到的正常内容。

标签: ruby-on-rails csv ruby-on-rails-plugins fastercsv


【解决方案1】:

试试标准库中的 CSV 库。对格式错误的 CSV 更宽容: http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html

【讨论】:

    【解决方案2】:

    在创建 FasterCsv 解析器的新实例时,您可以将文件的编码类型传递给 FasterCSV 选项。 (请参阅此处的文档:http://fastercsv.rubyforge.org/classes/FasterCSV.html#M000018

    将其设置为 utf-8 或 Microsoft 编码应该可以让它通过大多数不可靠的额外字符,使其能够真正解析为您需要的字符串...然后您可以将字符串清理为您想要的内容。

    文档中还有一些关于“转换器”的内容,您可以传入 - 尽管这更多地旨在转换数字或日期类型,但您可以将其用于 gsub 以获取不可靠的字符。

    【讨论】:

      【解决方案3】:

      试试 smarter_csv Gem - 您可以将一个块传递给它的过程方法并在使用之前清理数据

      https://github.com/tilo/smarter_csv

      【讨论】:

        猜你喜欢
        • 2018-05-26
        • 1970-01-01
        • 1970-01-01
        • 2020-03-09
        • 2011-12-02
        • 2017-07-03
        • 1970-01-01
        • 2020-04-30
        • 1970-01-01
        相关资源
        最近更新 更多