次のようなテキスト ファイルがあります。
STUFF UP HERE
APEXED NUMBER : 123456789
1234567 Bob,Hope E. 123.12
1234567 TOM ROGERS JR III 123.18
1234567 NICE, JOHNATH 4,450.00
1234567 PERDOND, DELLA 4,762.00
1234567 ERICCY, PHIL 4,552.00
STUFF IN BETWEEN
APEXED NUMBER :
1234567 RICHARDSON,FELICIA D 632.00
1234567 EARLEY, RICKY L 140.00
STUFF ON THE BOTTOM
私はファイルを読み、「APEXED NUMBER :」という単語を見つけたいと思っています。次に、コロンの後に数字があるかどうかを判断したいと思います。たとえば、最初の APEXED NUMBER の後に : 123456789 という数字が表示されます。この番号を保存したい。次に、ファイルに行をスキップさせてから、番号と情報を読み取らせます-情報をさまざまな変数に割り当てます。
次に、別の「APEXED NUMBER」テキストが見つかるまでファイルを(行ごとに)続行し、その後に数字があるかどうかを確認します。ない場合は、これらの APEX NUMBER に「不明」の値を割り当てて移動しますの上。
次に、見つかったすべてのテキストを取得し、コンマで区切って配列に格納します。
これが私の現在の試みです:
def is_numeric?(object) #used to determine if a number is a number
true if Float(object) rescue false
end
def is_apexed_line?(object) # check if text has "APEXED NUMBER :"
true if object == "APEXED NUMBER :" rescue false
end
def load_file
raw_records = []
infile = File.open("test.txt", "r")
while line = infile.gets
possible_apexed_line = line[2,15]
if is_apexed_line?(possible_apexed_line)
apexed_line = line[2,15]
possible_apexed_number_present = line[18,9]
if is_numeric?(possible_apexed_number_present)
abc_apexed_number = line[18,9]
else abc_apexed_number = "unknown"
end # end of if
record = [apexed_line, abc_apexed_number]
raw_records << record
end # end of if
end
puts raw_records.map {|record| record*','}
infile.close
end
load_file
これにより、次が生成されます。
APEXED NUMBER :, 123456789
APEXED NUMBER :, unknown
しかし、これは、これまでの私の学習が私を連れて行く限りです。私が探している結果はこれです:
1234567, BOB, HOPE E., 123.12, APEXED NUMBER :, 123456789
1234567, TOM ROGERS JR III, 123.18 , APEXED NUMBER :, 123456789
1234567, NICE, JOHNATH, 4450.00 ,APEXED NUMBER :, 123456789
1234567, PERDOND, DELLA, 4762.00 , APEXED NUMBER :, 123456789
1234567, ERICCY, PHIL, 4552.00, APEXED NUMBER :, 123456789
1234567, RICHARDSON,FELICIA D, 632.00 , APEXED NUMBER :, unknown
1234567, EARLEY, RICKY L, 140.00 , APEXED NUMBER :, unknown
私を正しい方向に向けるための提案/ヘルプをいただければ幸いです。私はこのアプローチに執着していません。それを行う他の方法がある場合は、提案してください...私はルビーを学んでいるので、ルビーの提案を好みます。
ありがとう