Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ruby中解析大型CSV文件的最佳方法_Ruby_Csv - Fatal编程技术网

在ruby中解析大型CSV文件的最佳方法

在ruby中解析大型CSV文件的最佳方法,ruby,csv,Ruby,Csv,在ruby中解析大型CSV文件的最佳方法是什么。我的CSV文件几乎是1GB。我想根据一些条件过滤CSV中的数据。您没有明确说明,但我认为大多数评论人认为这可能是一个家庭作业问题。如果是这样的话,你应该读作“”。如果不是,则改为“” 正如G4143在评论中所说,Ruby有一个非常好的特性,它应该适合您的需要 下面是几个使用foreach的快速示例,文档中描述了这些示例是读取CSV文件的主要方法。该方法一次读取文件中的一行,因此应该可以很好地处理大型文件。下面是一个基本示例,说明如何使用它过滤Csv

在ruby中解析大型CSV文件的最佳方法是什么。我的CSV文件几乎是1GB。我想根据一些条件过滤CSV中的数据。

您没有明确说明,但我认为大多数评论人认为这可能是一个家庭作业问题。如果是这样的话,你应该读作“”。如果不是,则改为“”

正如G4143在评论中所说,Ruby有一个非常好的特性,它应该适合您的需要

下面是几个使用
foreach
的快速示例,文档中描述了这些示例是读取CSV文件的主要方法。该方法一次读取文件中的一行,因此应该可以很好地处理大型文件。下面是一个基本示例,说明如何使用它过滤Csv记录的子集,但我鼓励您阅读Csv类文档,并跟进更具体的问题,展示您迄今为止在遇到问题时所做的尝试

基本思想是从一个空数组开始,使用
foreach
获取每一行,如果该行符合筛选条件,则添加到最初为空的筛选结果数组中

test.csv:

a, b, c
1,2,3


4,5,6 

需要“csv”
过滤=[]
CSV.foreach(“test.CSV”)do|行|
已筛选[[“1”、“2”、“3”]]

如果文件的第一行是“头”,则可以传入一个选项,将其视为:

require 'csv' 

filtered = []
CSV.foreach("test.csv", :headers => true) do |row|
    filtered << row if row["a"] == "1"
end
filtered
=> [#<CSV::Row "a":"1" " b":"2" " c":"3">]
需要“csv”
过滤=[]
CSV.foreach(“test.CSV”,:headers=>true)do |行|
过滤的

你没有特别说,但我想大多数评论的人都觉得这可能是一个家庭作业问题。如果是这样的话,你应该读作“”。如果不是,则改为“”

正如G4143在评论中所说,Ruby有一个非常好的特性,它应该适合您的需要

下面是几个使用
foreach
的快速示例,文档中描述了这些示例是读取CSV文件的主要方法。该方法一次读取文件中的一行,因此应该可以很好地处理大型文件。下面是一个基本示例,说明如何使用它过滤Csv记录的子集,但我鼓励您阅读Csv类文档,并跟进更具体的问题,展示您迄今为止在遇到问题时所做的尝试

基本思想是从一个空数组开始,使用
foreach
获取每一行,如果该行符合筛选条件,则添加到最初为空的筛选结果数组中

test.csv:

a, b, c
1,2,3


4,5,6 

需要“csv”
过滤=[]
CSV.foreach(“test.CSV”)do|行|
已筛选[[“1”、“2”、“3”]]

如果文件的第一行是“头”,则可以传入一个选项,将其视为:

require 'csv' 

filtered = []
CSV.foreach("test.csv", :headers => true) do |row|
    filtered << row if row["a"] == "1"
end
filtered
=> [#<CSV::Row "a":"1" " b":"2" " c":"3">]
需要“csv”
过滤=[]
CSV.foreach(“test.CSV”,:headers=>true)do |行|
过滤的

您当前解析它的方式是什么,它的具体问题是什么?你如何衡量“最佳”呢?我试过更聪明的csv和Rcsv宝石。但这也需要很长时间。请给出一个例子来解释这个问题。例如:我有一个csv文件,其中包含一所学校学生的成绩记录。我必须写一个ruby程序来找到成绩在70分以上的学生。文件大小为1GbRuby提供了一个用于处理CSV文件的优秀库CSV,您猜是CSV文件。我将研究提供的foreach、filter和parse方法。您当前解析它的方式是什么,它的具体问题是什么?你如何衡量“最佳”呢?我试过更聪明的csv和Rcsv宝石。但这也需要很长时间。请给出一个例子来解释这个问题。例如:我有一个csv文件,其中包含一所学校学生的成绩记录。我必须写一个ruby程序来找到成绩在70分以上的学生。文件大小为1GbRuby提供了一个用于处理CSV文件的优秀库CSV,您猜是CSV文件。我将研究提供的foreach、filter和parse方法。