1

次のような CSV ファイルがあります。

Jenny, jenny@example.com ,
Ricky, ricky@example.com ,
Josefina josefina@example.com ,

私はこの出力を得ようとしています:

users_array = [
['Jenny', 'jenny@example.com'], ['Ricky', 'ricky@example.com'], ['Josefina', 'josefina@example.com']
]

私はこれを試しました:

users_array = Array.new

file = File.new('csv_file.csv', 'r') 
file.each_line("\n") do |row| 
    puts row + "\n" 
    columns = row.split(",") 
    users_array.push columns 
    puts users_array
end 

残念ながら、ターミナルでは、これは次を返します。

Jenny
jenny@example.com
Ricky
ricky@example.com
Josefina
josefina@example.com

これはうまくいかないと思います:

users_array.each_with_index do |user|
    add_page.form_with(:id => 'new_user') do |f|
      f.field_with(:id => "user_email").value = user[0]
      f.field_with(:id => "user_name").value = user[1]
    end.click_button
end

何を変更する必要がありますか? または、この問題を解決するためのより良い方法はありますか?

4

2 に答える 2

1

Ruby の標準ライブラリにはCSV、同様の API を持つクラスがありFileますが、表形式のデータを操作するための便利なメソッドが多数含まれています。必要な出力を取得するには、次のことを行うだけです。

require 'csv'
users_array = CSV.read('csv_file.csv')

PS - ファイルの解析でも期待どおりの出力が得られていると思いますが、端末への出力方法にうんざりしている可能性があります。puts配列では動作が異なり、各メンバー オブジェクトを単一の配列としてではなく、新しい行に出力します。配列として表示する場合は、 を使用しますputs my_array.inspect

于 2013-06-20T00:06:22.740 に答える