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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(プログラミング・Web制作) 【python】Excelファイルを読み込む際の日付の表示形式を任意にする 2 2022/11/24 14:21
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- UNIX・Linux bash のファイルの読み込み方についてご質問 3 2023/05/15 20:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fortranでNAのあるデータを読み...
-
ギャスケット作成。修正の解説...
-
[common lisp]データ読み込みに...
-
バッチ処理 特定の文字以降を...
-
【ExcelVBA】300万件越えCSVか...
-
VBAでcsvファイルもシートもあ...
-
VBA テキストボックスを選択状...
-
ダブルコーテーション付きでCSV...
-
Access VBA エラー2448について
-
Excelマクロ 空白セルを無視し...
-
SQLでテキストボックスの文字を...
-
VBAで複数のCSVからレコードセ...
-
[コンパイルエラー 修飾子が不...
-
vbaマクロについて 【1.csv】を...
-
エクセルマクロの質問です。
-
VBA csvファイルのデータを...
-
LibreOffice Calcのマクロで、...
-
エクセルの任意のシートをcs...
-
CSVデータの文字列置換
-
シート内容の文字列を置換してV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fortranでNAのあるデータを読み...
-
Fortran:列数の分からないデー...
-
pythonのエラーについて
-
【ruby】flockで掛けたロックを...
-
pycharmへのpysamインストール...
-
【fortran77】空行を含む数値デ...
-
rubyの見えない文字
-
rubyプログラムでのフォルダ内...
-
2行読み込んで一行戻り、また2...
-
ギャスケット作成。修正の解説...
-
バッチ処理 特定の文字以降を...
-
Excelマクロ 空白セルを無視し...
-
【ExcelVBA】300万件越えCSVか...
-
VBAでcsvファイルもシートもあ...
-
ダブルコーテーション付きでCSV...
-
[コンパイルエラー 修飾子が不...
-
VBA テキストボックスを選択状...
-
Access VBA エラー2448について
-
INPUTタグ disabledの文字色を...
-
EXCEL→CSV保存時のダブルクォー...
おすすめ情報