
2行読み込んで一行戻り、また2行読み込む
はじめまして、現在、「2行読み込み、一行戻り、また2行読み込む」処理のものを作成しています。
具体的には、
A
B
C
D
E
と5行に渡り記述されたファイルを上記の旨で表示させる場合、
A
B
B
C
C
D
D
E
としたいのですが、
filename = ARGV[0]
ABCDE = []
file = open(filename)
while f = file.gets do
f.chomp!
g = file.gets
g.chomp!
p f
p g
end
file.close
とすると出力は
"A"
"B"
"C"
"D"
abcde.rb:9: private method `chomp!' called for nil:NilClass (NoMethodError)
もちろん2行読み込んで、そのまま次の2行を読み込む記述のため上記のようになってしまいます。
まとめますと、
「一行戻るための記述がわからないので、それを実現するための記述を教えてほしい」
ということです。
rewindを使うと先頭まで戻ってしまうのでどうしたらいいのかさっぱりです。
わかりづらくて非常に申し訳ない、初歩的であろう質問ですがよろしくお願いします。
rubyは1.8.6を使っています。
No.1ベストアンサー
- 回答日時:
逆にお聞きします。
1行「戻らないと」ダメなのですか?
例えば
f = nil
while g = file.gets do
g.chomp!
unless f.nil? then
p f
p g
end
f=g
end
と、前の行を変数に取っておく、という方法もあります。
どうしても戻るのなら、2行目を読む前にtell / posで場所を覚えてseek / posで移動するというのはありますが、何度もファイルを行き来して読むのは効率はよくないです。
file_position=0
while f = file.gets do
f.chomp!
file_positon = file.pos
g = file.gets
# ここでg==nil(→ファイルがfを読んだところで終り)のチェックが無いので
# 次のchompで
# abcde.rb:9: private method `chomp!' called for nil:NilClass (NoMethodError)
#のエラーになってます
g.chomp!
p f
p g
file.pos = file_positon
end
返信ありがとうございます。
変数でとっておくということも考えましたが、おっしゃるようにどうしても戻る必要がありました。
.pos
.seek(i)
というのがあったのですね。
エラーですが
if g == nil then
break
を付けて直しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSのhtmlへの紐付けについ...
-
WSLのUbuntuで、Railsのインス...
-
1、Rstudioで回帰直線を求める...
-
Accessで文字列のバイト数読み込み
-
(再質問)エクセルのマクロボ...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
-
ルビー言語 csvファイル 続き
-
ルビー言語 ライブラリー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングについて教えて...
-
pythonのエラーについて
-
fortranでNAのあるデータを読み...
-
【fortran77】空行を含む数値デ...
-
rubyの見えない文字
-
【ruby】flockで掛けたロックを...
-
pycharmへのpysamインストール...
-
Rubyで、外で定義した文字列をd...
-
Fortran:列数の分からないデー...
-
Excelマクロ 空白セルを無視し...
-
バッチ処理 特定の文字以降を...
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
【ExcelVBA】300万件越えCSVか...
-
INPUTタグ disabledの文字色を...
-
ファイル名を変数で書きこむfwr...
-
VBAで複数のCSVからレコードセ...
-
VBA テキストボックスを選択状...
-
CSVで余計な空行が入る
-
Access VBA エラー2448について
おすすめ情報