如何进一步处理导致 Ruby FasterCSV 库抛出 MalformedCSVError 的数据行?

2023-11-29

传入数据文件包含格式错误的 CSV 数据(例如非转义引号)以及(有效)CSV 数据(例如包含换行符的字段)。如果检测到 CSV 格式错误,我想对该数据使用替代例程。

使用以下示例代码(为简单起见进行了缩写)

FasterCSV.open( file ){|csv|
  row = true
  while row
    begin
      row = csv.shift
      break unless row
      # Do things with the good rows here...

    rescue FasterCSV::MalformedCSVError => e
      # Do things with the bad rows here...
      next
    end
  end
}

MalformedCSVError 是在 csv.shift 方法中引起的。如何从救援子句中访问导致错误的数据?


require 'csv' #CSV in ruby 1.9.2 is identical to FasterCSV

# File.open('test.txt','r').each do |line|
DATA.each do |line|
  begin
    CSV.parse(line) do |row|
      p row #handle row
    end
  rescue  CSV::MalformedCSVError => er
    puts er.message
    puts "This one: #{line}"
    # and continue
  end
end

# Output:

# Unclosed quoted field on line 1.
# This one: 1,"aaa
# Illegal quoting on line 1.
# This one: aaa",valid
# Unclosed quoted field on line 1.
# This one: 2,"bbb
# ["bbb", "invalid"]
# ["3", "ccc", "valid"]   

__END__
1,"aaa
aaa",valid
2,"bbb
bbb,invalid
3,ccc,valid

只需将文件逐行输入 FasterCSV 并修复错误即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何进一步处理导致 Ruby FasterCSV 库抛出 MalformedCSVError 的数据行? 的相关文章

  • 转储 YAML 时如何强制使用双引号?

    我有一个小脚本来自动化 YAML 文件中的一些操作 我读取原始 YAML 文件并将其转换为哈希 然后dump http ruby doc org stdlib 1 8 6 libdoc yaml rdoc YAML html method
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • Watir 更改 Mozilla Firefox 首选项

    我正在使用 Watir 运行 Ruby 脚本来自动执行一些操作 我正在尝试自动将一些文件保存到某个目录 因此 在我的 Mozilla 设置中 我将默认下载目录设置为桌面并选择自动保存文件 然而 当我开始运行脚本时 这些更改并未反映出来 似乎
  • 如何在 Rails 4 中使用 params.require

    我有一个像这样的私有方法 用于有四个字段的注册表单 firstname email password and confirm password 我不知道如何检查password confirmation def user params pa
  • yard 0.7.3 无法在 Markdown 和 Textile 中构建我的自述文件

    我决定将我的项目中的 README 文件转换为 Markdown 并一直使用yard 验证文档是否正确呈现 所以我安装了 rdiscount 将 README 更改为 README md 并尝试 yard doc README md 这给了
  • 如何使用本地安装的gems执行Ruby程序?

    我已经使用安装了我的依赖项 bundle package 然后将它们传输到离线服务器并运行 gt bundle install local Using mime types 1 19 Using rest client 1 6 7 Usin
  • ruby 中的 #encode 和 #force_encoding 有什么区别?

    我真的不明白之间的区别 encode and force encoding在 Ruby 中String班级 我明白那个 kam force encoding UTF 8 将迫使 kam 是UTF 8编码 但是怎么样 encode encod
  • rvm gem 安装错误?

    我正在摆弄 ruby gems 和 rvm 它工作得很好 但现在当我尝试安装 gem 时出现错误 gem install Rails错误 同时 执行 gem Errno EACCES 权限被拒绝 Users da rvm gems ruby
  • 在 ruby​​ 中下载多个 FTP 文件,如 d*.txt

    我需要连接到 ftp 站点并下载一堆名为 D txt 的文件 最多 6 个 你能帮我用 Ruby 编写这个代码吗 下面的代码只是 ftp Net FTP new ftp server site ftp login user pwd ftp
  • Ruby require 'file' 不起作用,但 require './file' 可以。为什么?

    我有一个充满 ruby 文件的文件夹 当我尝试使用位于同一目录中的另一个文件中的一个文件时require file 我得到一个LoadError但是当我使用require file 一切正常 有人可以向我解释为什么会发生这种情况吗 如果有什
  • 在 Ruby 中创建一个空文件:相当于“touch”?

    创建一个的最佳方式是什么emptyRuby 中的文件 类似于 Unix 命令的东西 touch https en wikipedia org wiki Touch 28Unix 29 touch file txt FileUtils tou
  • ruby 正则表达式匹配模式的多次出现

    我正在寻找构建一个 ruby 正则表达式来匹配模式的多次出现并将它们返回到数组中 模式很简单 即 两个左括号 一个或多个字符 后跟两个右括号 这就是我所做的 str Some random text lead first name and
  • Ruby 中的 DateTime.parse() 是否依赖于语言环境?

    我想知道以下示例的输出 解析时01 03 它会被解决为Mar 1st or Jan 3rd Ruby 不依赖于语言环境 因为红宝石是一个服务器端语言而不是客户端像 JavaScript 一样的语言 Ruby 使用系统时钟yourWeb 应用
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • 带有 OAuth2 的 YouTube API v3:更新和删除失败并出现“权限不足”错误

    我在尝试着update and delete视频使用YouTube API v3 https developers google com youtube v3 docs videos with OAuth2 用于身份验证 https dev
  • 使用哈希参数进行 DRY Ruby 初始化

    我发现自己经常在构造函数中使用哈希参数 尤其是在为配置或最终用户将接触到的其他 API 编写 DSL 时 我最终做的是类似以下的事情 class Example PROPERTIES name age PROPERTIES each p a
  • 什么是适合 Rails 3 的测试框架?

    去年我一直在使用 Ruby On Rails 但是 无法进行单元测试 现在我必须编写单元测试代码 哪个测试框架好 为什么 有这方面的好的教程吗 我的系统配置 Ruby 1 9 2 Rails 3 Ubuntu 10 第一个技巧是 尝试升级到
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行

随机推荐

  • Xaxis-Tick 标签已经消失,用 pandas 绘制到子图上,但仍然存储

    使用嵌套在其他脚本中的复杂脚本pandas DataFrame plot and GridSpec在子图设置中 我遇到以下问题 当我创建 2 列 1 行网格规范时 刻度标签都是正确的 然而 当我创建 1 列 2 行 gridspec 时 一
  • Spring Boot中JMS消费者的动态扩展

    我正在尝试构建一个 spring boot 应用程序 它将从 activeMQ 生产者读取数据 我希望客户可用的资源达到最佳状态 在我的 spring boot 应用程序中 我想配置多个消费者 并且所有这些消费者将连接到一个队列 他们是我可
  • 从 .pub 格式的公钥创建 JSch HostKey 实例

    我正在尝试使用 JSch 将文件从 Windows 计算机发送到 Linux 计算机 因此 我将主机公钥从 Linux 计算机复制到我的 Windows 计算机 并将密钥添加到我的HostKeyRepository 但由于某种原因 我收到
  • 下载时限制带宽

    我有一个可以使用互联网连接来下载数据的应用程序 我在用着HttpURLConnection要做到这一点 Problem 我的应用程序会耗尽互联网带宽 因此用户在浏览器上浏览速度会很慢 我想让它们选择性地自行设置带宽限制 而不是像这个网站 我
  • 我可以删除下面的 flutter 代码中的 const 吗?

    更新到 flutter 2 5 后 默认代码中添加了 const 修饰符 并且有些地方不需要添加 const 那么添加 const 有什么区别呢 import package flutter material dart void main
  • 从批处理文件创建新的批处理文件

    是否可以从现有批处理文件创建新的批处理文件 例如 在 Java C 和几乎任何其他语言中 我可以运行一个 exe 并使用单独的代码创建另一个 exe 这可以在批处理文件中完成吗 假设我希望 test bat 是这样的 echo hello
  • 正确使用 Laravel 的分页方法?

    当我使用paginate方法具有以下语句 user User where id 1 gt first images user gt images gt paginate 3 我收到以下错误 方法 Illuminate Database El
  • 在 bash 中自动将最后一个命令的输出发送到文件?

    在 OSX 上使用 bash 如何设置 shell 以便它使用最近命令的输出覆盖某个文件 这对于查看 搜索 分析大型输出非常方便 而我没有先见之明可以通过管道传输到文件 谢谢您的帮助 Use script您的命令及其输出将存储在日志文件中
  • 使用张量板时,如何总结多个小批量计算的损失?

    我想使用 Tensorboard 来可视化验证样本中损失的演变 但验证集太大 无法在一个小批量中进行计算 因此 为了计算我的验证损失 我必须在覆盖验证集的多个小批量上多次调用 session run 然后我将每个小批量的损失 在Python
  • “无法映射用于编码 UTF-8 的字符”错误

    我在以下方法中遇到编译错误 public static boolean isValidPasswd String passwd String reg 0 9 a z A Z s 8 24 return Pattern matches reg
  • 包含 WEB-INF 中的 javascript 文件 [重复]

    这个问题在这里已经有答案了 我正在用struts开发一个网站 我的文件夹结构如下 现在 我有一个jsp页面register jsp 我想在其中添加jquery validate js文件 我已遵循以下链接的建议 无法在 JSP 中包含 WE
  • iPhone 上的 CSS 过滤器速度慢?

    我有一个带有这个 css 类的 div pos webkit filter brightness 0 5 moz filter britghtness 0 5 o filter brightness 0 5 ms filter bright
  • 将 A4 PDF 页面拆分为两个 A5,然后再拆分回来

    我有一个 A4 页的 PDF 出于打印原因 每页包含两张相同的 A5 页 我想要在我的 Java 程序中做的是拆分这些页面 并使用每个唯一的 A5 页面零到多次作为模板来添加 替换一些文本 完成此操作后 我想将 A5 页再次粘回 A4 页
  • 在 C++11/14 中按值返回局部变量是否会导致在不涉及复制/移动时由右值构造返回值?

    我知道在以下情况下 编译器可以自由地移动构造来自makeA 但也可以自由地删除副本或完全移动 struct A A A A A A makeA A localA return localA 我想知道编译器是否允许构造类型的对象A来自类型的本
  • Kubernetes 服务无法访问

    我在 2 个 Rasberry Pi 型号 3 和 3B 上创建了一个 Kubernetes 集群 用作 Kubernetes 游乐场 我已经部署了一个 postgresql 和一个 spring boot 应用程序 称为meal plan
  • 在 bash 脚本中查找文件夹名称的一部分

    尝试在文件夹结构中查找特定部分 但我在 bash 脚本中使用 RegEx 时遇到问题 此外 我的正则表达式说得不太流利 我需要知道我传递给 bash 脚本的文件夹 类型 根据当前所在的文件夹 类型 需要运行不同的操作 以下示例文件夹结构 h
  • 从 HTML 表单调用 servlet,但从未调用 servlet [重复]

    这个问题在这里已经有答案了 我从 html 表单调用 servlet servlet 获取表单数据 并将该表单数据插入数据库 但是当我单击提交按钮时 错误页面出现 请帮助我的 servlet 代码出了什么问题 我的servlet代码 imp
  • 使用 JMH 时出现奇怪的输出

    我正在使用 jmh 来对一个简单的应用程序进行基准测试 来自 SO 问题java fork join 中出现意外的可扩展性 使用 Maven 并遵循命令行方法 如建议的http openjdk java net projects code
  • Java - 如何检查另一个(非 Java)进程是否正在 Linux 上运行

    我遇到了一些奇怪的问题 我们正在使用 Xvfb 虚拟桌面管理器 并希望在继续之前确保它正在运行 使用纯 shell 我可以轻松做到这一点 ps ef grep Xvfb grep v grep 这正是我所需要的 一行包含有关 Xvfb 过程
  • 如何进一步处理导致 Ruby FasterCSV 库抛出 MalformedCSVError 的数据行?

    传入数据文件包含格式错误的 CSV 数据 例如非转义引号 以及 有效 CSV 数据 例如包含换行符的字段 如果检测到 CSV 格式错误 我想对该数据使用替代例程 使用以下示例代码 为简单起见进行了缩写 FasterCSV open file