• ベストアンサー

数gbのcsvファイルから高速に1行目だけRuby

ahoo_chieokurの回答

  • ベストアンサー
回答No.1

列ではなく、「1行目だけ取り出したい」のですね。 ただ単に次でOKです。 file = File.open("a.csv","r") puts file.gets() file.close()

関連するQ&A

  • CSVファイルによる検索の高速化

    CSVファイル内を検索し、一致した行を抽出して出力する際、みなさんはどのような方法を選びますか?私の手元にあるCSVファイルは3000行以上のファイルで、500KBあります。出来る限り、高速化したいのです。文字コードはUTF-8で日本語が主に書かれています。

    • ベストアンサー
    • PHP
  • RubyでCSVファイルの1行目を削除したい 

    Rubyの初心者でSeleniumを使ってスクレイピングを趣味としてしているものです。 ブラウザはchromeです。 この間、例外が上がったときに一定回数リトライする方法をご伝授頂きました。 http://okwave.jp/qa/q8722965.html そしてそれを活用して、CSVにスクレイピングをしたいURLを1列目に並べ、複数のページをスクレイピングしているのですが、 def try(n=10) require 'pp' require 'csv' require 'selenium-webdriver' require 'open-uri' hoge_path = File.expand_path('../hoge.csv',__FILE__) driver = Selenium::WebDriver.for :chrome #chrome のdriverを設定 CSV.foreach(hoge_path) do |row| driver.navigate.to row[1] #URL移動 #ページの移動など driver.quit #ブラウザ終了 driver = Selenium::WebDriver.for :chrome #chrome のdriverを設定 end rescue => e if n==0 raise e driver.quit #ブラウザ終了 else driver.quit #ブラウザ終了 try(n-1) end end try よく仕組みを理解できていないのですが、CSV.foreach内はループされます。 そして、404エラーなどで落ちるとまた一行目に戻ってスクレイピングが行われ、非常に困っています。 そこで、CSVファイルの1行目をループするまたは例外のリトライの際に削除していけば良いと考えたのですが、一行目を削除するというコードをどう書けばいいのか分かりません。 どうかご伝授お願いします。

    • ベストアンサー
    • Ruby
  • RubyによるCSVファイルの該当行の取り出し

    お世話になります、 Rubyプログラムにて以下のようにCSVファイルをコピー&ペーストしておりますが、 出力結果の1-4行目までの数値は必要ないため、5行目より処理をしたいのです。 良い方法があればご教示いただけないでしょうか。 ・RubyProgram <snip> p1 = ARGV[0] # p1:出力ログ対象CSV file_csv = File.open(p1,"r") while csv_word = file_csv.gets do chk_value_log.print csv_word p csv_word end file_csv.close chk_value_log.close <snip> ・出力結果 $ ruby -v aaaaa.rb bbbb.csv ruby 1.8.4 (2005-12-24) [i386-cygwin] "# name, id, name, IP address,,,,,,,,,,,,,,,,,,,,\r\n" "# name, id, name, IP address,,,,,,,,,,,,,,,,,,,,\r\n" "# name, id, name, IP address,,,,,,,,,,,,,,,,,,,,\r\n" "# name, id, name, IP address,,,,,,,,,,,,,,,,,,,,\r\n" "1,3,1101,0,32,19,1152,1,4,0,0,0,0,0,0,0,0,1152,1101,51,0,0,0,0\r\n" "1,4,254,0,7,3,264,1,3,0,0,0,0,0,0,0,0,264,254,10,0,0,0,0\r\n" "1,1,-1,0,25,66,-1,0,0,0,0,0,0,0,0,0,0,0,0,-1,70,2945,8153\r\n"

  • RubyでCSVファイルから検索するには??

    ruby初心者です。 よろしくお願いします。 以下のようなcsvファイルからユーザーの入力内容をキーに 該当する行を検索して表示させるというような処理を実行したいです。 name,email,tel andy,andy@yahoo.co.jp,090xxxxxxxx bob,bob@yahoo.co.jp,090xxxxxxxx amy,amy@yahoo.co.jp,090xxxxxxxx 入力例:amy 出力:amy,amy@yahoo.co.jp,090xxxxxxxx (該当する行を全て出力させたい) ご教授よろしくお願い致します。 環境:Win7、ruby2.0

  • CSVファイルの行が突然消える

    あるデータを抽出し、それをCSVファイルで取り込み、1つ取り込む ごとにCSVファイルが1行ずつ増えていきます。 適当な時期に、何行かたまった行を一気にAccessを用いてさらに取り込み ます。(取り込むのみ) あるとき、CSVファイルを開くと突然CSVファイルの行が減って いるのです。 何が起きているのでしょうか? Accessに何かマクロとか組んであって突然消えるのでしょうか? Accessを開く前と開いた後(取り込んだ後)で、特にCSVファイル に変更はありません。 あるとき突然CSVファイルを開くと昨日まであった行が突然 消えてしまうのです。(いつ起こるのか予測できていません。) CSVファイルにはマクロが組んであるようには見えません。 何かわかればお願いします。

  • vbs csvファイル内の行を変更

    vbsにて、csvファイルを読み込み、 以下のように行の値を変更することは可能でしょうか。 変更箇所は1行目です。 <元csvファイル> 氏名 性別 年齢  <変更後csvファイル> フルネーム 男女 年 住所 電話番号 コードのご教示お願いいたします。

  • Rubyを使用してcsvファイルを処理しているのですが、どうしてもでき

    Rubyを使用してcsvファイルを処理しているのですが、どうしてもできない事があり質問させていただきました。 下記のようにCSVファイルを処理したいのですが教えてください。 処理前CSVファイル内容:"abc",111,bbb,"ccc","123" 処理後CSVファイル内容:"abc",111,bbb,"xxx","321" 普通にCSVparserを用いて処理すると下記のようダブルクォーテーションが消えてしまいます。 処理後CSVファイル内容:abc,111,bbb,xxx,321 ご教授お願い致します。

  • エクセルVBAでCSVを読み込んで別ファイルにまとめたいです。

    エクセルVBA初心者の者です。 マクロの記録でできたコードをいじって、 なんとか動くものができるレベルです。 Aというフォルダに20~40行程度の内容のCSVファイルが 数百個あります。開けてみないと何行あるのかわかりません。 そのAフォルダのCSVの内容をエクセルで開いて、別のエクセルファイルの一枚のシートにまとめたいのです。 最初にCSVファイル名を一枚のシートのA列に書き出すところ まではやれたのですが、それを順番に読み込んでコピペの 流れができません。 CSVファイル名読み込み 読み込んだファイル1つめCSV開く CSVの20~40行をコピー 別のエクセルファイルのシートに貼り付け 1つめCSV閉じる ↓ 読み込んだファイル2つめCSV開く 繰り返し こういうやり方じゃない方がいいのかもわかりません。 もしかして考え方も違うのでしょうか? サンプルコード教えていただけるとありがたいです。 よろしくお願いします。

  • CSVの3行目だけを…

    はじめまして!Nakanoと申します。 えっと、以下質問になります。おねがいします。。 CGI/Perlを始めて1週間程度の素人なのですが、 CSVファイルをHTMLのテーブル表示させる 様にしたいなと思っています。 そこで用意したCSVファイルが5行と8列で カンマ区切りのみで構成されています。 このCSVファイルから3行目だけを抽出する方法 ってありますでしょうか? 1行目のみ表示や1行目以外の2行目以下全てを表示 させたりは出来たのですが、3行目だけを表示するの がどうしても分かりませんでした・・・・・ 何方様か。よろしければその辺の所を詳しくご指導 いただけないでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Perl
  • VBでCSVファイルのある行をインポート

    VBでCSVのインポートをしたいのです。 CSVファイルの中身で、最初の5行は読みません。そして、カンマ区切りの行の最初の文字が数字である場合だけを読みたいのです。で最後の3行も読みません。 ですので、CSVのデータを読む場合に最初の5行を飛ばすという方法か、カンマ区切りの行の最初の文字が数字の場合だけ読むという方法はありませんでしょうか。 Line Input #intFileNo, strTextLine strTextLine = Replace(strTextLine, """", "") str = Split(strTextLine, ",") こんな感じのコードで考えてます。 お分かりの方いましたらお願いします。