如何在Ruby中轻松过滤CSV数据

Rah*_*hul 4 ruby csv ruby-on-rails

我正在处理CSV文件(约500行)。有没有一种方法可以使用过滤器从此文件中选择数据。我知道我可以通过解析csv并使用select / find方法在ruby中做到这一点,但我正在寻找一种更简单的语法。我不想编写处理以下每个查询的方法。有什么宝石可以让我进行这些查询吗?我在编写纯红宝石脚本时正在寻找非Rails解决方案。

例如

csv.find_rows(where: {'GENDER' => 'MALE'}.count
Run Code Online (Sandbox Code Playgroud)

要么

csv.find_rows(where: {'GENDER' => 'MALE', 'SALARY' >= 10000 }
Run Code Online (Sandbox Code Playgroud)

And*_*eko 6

我认为您在这里不需要宝石:

csv.select { |row| row['GENDER'] == 'MALE' }
csv.select { |row| row['GENDER'] == 'MALE' || row['SALARY'] >= 10000 }
Run Code Online (Sandbox Code Playgroud)

  • @Rahul“开箱即用”是什么意思?2行代码对您来说还不够“开箱即用”吗?:) (3认同)
  • @Rahul没有这种宝石,因为创建具有这种功能的宝石甚至没有意义。考虑一下-您正在寻找某种ActiveRecord语法,同时又说您想要一个非Rails解决方案。如果您要使用非Rails解决方案-使用Ruby,那么它就为您提供了简单的现成方法。您的需求是基本的,我看不到任何宝石会如何简化它 (3认同)
  • @Rahul我同意Andrey的观点,无论如何您都可以指定条件,并且选择语法并不比您提供的语法冗长。我的意思是,不需要宝石。 (2认同)