85

「A.csv」という CSV ファイルがあります。「A.csv」のデータを使用して、「B.csv」という新しい CSV ファイルを生成する必要があります。

「A.csv」の列のサブセットを使用し、「B.csv」で 1 つの列の値を新しい値に更新する必要があります。最終的に、B.csv からのこのデータを使用して、データベースに対して検証します。

  1. 新しい CSV ファイルを作成するにはどうすればよいですか?
  2. 必要な列のデータを A.csv から "B.csv" にコピーするにはどうすればよいですか?
  3. 特定の列に値を追加するにはどうすればよいですか?

Ruby は初めてですが、CSV を読み取って配列またはハッシュを取得できます。

4

3 に答える 3

4

Ruby の CSV クラスを見たことがありますか? かなり包括的なようです。ここで確認してください: http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html

于 2012-10-04T00:50:10.340 に答える
0

CSV::parseRuby が CSV をデータのテーブルとして理解し、ヘッダーから値に簡単にアクセスできるようにするために、おそらく使用したいと思うでしょう。

残念ながら、このメソッドに関する入手可能なドキュメントではCSV::parse、この目的で実際にどのように使用するかについてはあまり明確ではありません。

私は同様のタスクを持っていて、CSVクラスのドキュメントやここからそれを指す回答よりも、rubyguides.comのRubyでCSVファイルを読み込んで解析する方法によってはるかに助けられました.

そのページ全体を読むことをお勧めします。CSV::Table重要な部分は、以下を使用して特定の CSV をオブジェクトに変換することです。

table = CSV.parse(File.read("cats.csv"), headers: true)

classに関するドキュメントCSV::Tableがありますが、ここでも ruby​​guides.com ページの明確な例が役立つかもしれません。ここで強調しておきたいことの 1 つは、.parseヘッダーを予期するように指示すると、結果のテーブルでデータの最初の行が row として扱われること[0]です。

.by_colおそらく、新しいTableオブジェクトで使用できるメソッドに特に関心があるでしょう。これにより、入力および/または出力の異なる列インデックス位置を反復処理し、一方から他方にコピーするか、出力に新しい値を追加できます。動作するようになったら、戻って例を投稿します。

于 2020-03-17T22:33:40.100 に答える