我使用下面的代码来读取压缩的CSV文件的内容.
Zip::ZipFile.foreach(file) do |entry|
istream = entry.get_input_stream
data = istream.read
#...
end
Run Code Online (Sandbox Code Playgroud)
它为我提供了文本(CSV)文件的全部内容,如下所示:
NAME AGE GENDER NAME1 29 MALE NAME2 30 FEMALE
Run Code Online (Sandbox Code Playgroud)
但我需要专栏的具体数据.例如,我想只显示名称(NAME).请帮我继续这个.
虽然您的示例显示了ZipFile,但您确实在问一个CSV问题.首先,您应该查看http://www.ruby-doc.org/stdlib-2.0/libdoc/csv/rdoc/CSV.html中的文档
您会发现,如果使用:headers => true选项解析数据,您将获得一个CSV::table知道如何提取数据列的对象,如下所示.(出于显而易见的原因,我不会这样编码 - 仅作为示例.)
require 'zip'
require 'csv'
csv_table = nil
Zip::ZipFile.foreach("x.csv.zip") do |entry|
istream = entry.get_input_stream
data = istream.read
csv_table = CSV.parse(data, :col_sep => " ", :headers => true)
end
Run Code Online (Sandbox Code Playgroud)
根据您提供的数据,我们需要`col_sep =>"",因为您使用空格作为列分隔符.但现在我们可以做到:
>> csv_table["NAME"] # extract the NAME column
=> ["NAME1", "NAME2"]
Run Code Online (Sandbox Code Playgroud)