ファイル関連のタスクに取り組んでいます。いくつかの行とヘッダーを含むCSVファイルがあります。特定のヘッダーを含む列をフェッチし、最後に新しい列を作成して、いくつかの操作を実行する必要があります。列をフェッチするにはどうすればよいですか。特定のヘッダー値を持つ値と、最後に新しい列を作成するにはどうすればよいですか?
2 に答える
次の形式のCSVがあると仮定します
郵便番号 ネットワーク ID ネットワーク名 ゾーン 新しいネットワークですか?表示名 64024 275 Kansas City 2 いいえ Kansas City 64034 275 Kansas City 2 いいえ Kansas City
FasterCSV を使用できます。csv にヘッダーがある場合はheaders => true
、以下に示すように、FasterCSV を使用して行ごとにデータをフェッチすること を指定できます。
FasterCSV.foreach(path_to_file, { :headers => true, :row_sep => :auto }) do |row|
CSVファイルから行を取得するcsvを反復するたびに、列2に「network_id」ヘッダーがあり、列3に「ネットワーク名」ヘッダーがあることがわかっているのでnetwork_id = row[2]
、簡単に指定できます。network_name = row[3]
それがあなたの質問に答えることを願っています
CSV の最初のレコードは、ヘッダー レコードと見なすことができます。そうでなければならないというルールはありません。
あなたの質問に来ます。簡単に言えば、「ヘッダー」と見なされるものを取得するには、ロジックを (API を使用して、または API を使用せずに) 記述する必要があるということです。
特定のヘッダーを持つ列をフェッチし、最後に新しい列を作成して、いくつかの操作を行う必要があります
API が特定のヘッダーを取得するための暗黙的なメカニズムを提供するとは思いません。AFAIK CSVには仕様がありません。FasterCSV のような API を使用して CSV を解析し、作業を完了することができます。