前提・実現したいこと
この質問は、下記URLにある前回分の質問からの続きになっております。
https://teratail.com/questions/238752
現在、電車の経路案内プログラムを作成しております。
今回は2つCSVファイルから特定のデータを抽出し、ハッシュに格納したいと考えております。
1つ目のCSVから駅のコードを取得し、2つ目のCSVでは1つ目で取得した駅のコードに対応する隣接駅のデータを取得し、
ハッシュ形式で出力したいです。
期待する出力は下記の通りです。
["station1", "station2"]
→例:
[1110101, 1110102]
[1110102, 1110103]
[1110103, 1110104]
[1110104, 1110105]
[1110105, 1110108]
[1110105, 1110106]
[1110106, 1110107]
[1110107, 1110108]
CSVファイルの詳細は下記の通りです。
①station20191227.csv
駅情報に関する情報が格納されたCSVファイル
→1つ目の駅を取得します
※情報量が多いため、全データについては下記URLをご参照ください。
https://drive.google.com/open?id=13tOxt-KrPVVKnM7UCZyle_9KoFBoisLP
CSV
1station_cd,station_g_cd,station_name,station_name_k,station_name_r,line_cd,pref_cd,post,add,lon,lat,open_ymd,close_ymd,e_status,e_sort 21110101,1110101,函館,,,11101,1,040-0063,北海道函館市若松町12-13,140.726413,41.773709,1902-12-10,,0,1110101 31110102,1110102,五稜郭,,,11101,1,041-0813,函館市亀田本町,140.733539,41.803557,,,0,1110102 41110103,1110103,桔梗,,,11101,1,041-0801,北海道函館市桔梗3丁目41-36,140.722952,41.846457,1902-12-10,,0,1110103 51110104,1110104,大中山,,,11101,1,041-1121,亀田郡七飯町大字大中山,140.71358,41.864641,,,0,1110104 61110105,1110105,七飯,,,11101,1,041-1111,亀田郡七飯町字本町,140.688556,41.886971,,,0,1110105 71110106,1110106,新函館北斗,,,11101,1,041-1242,北海道北斗市市渡,140.646525,41.9054,1902-12-10,,0,1110106 81110107,1110107,仁山,,,11101,1,041-1101,亀田郡七飯町字仁山,140.635183,41.930011,,,0,1110107 91110108,1110108,大沼,,,11101,1,041-1354,北海道亀田郡七飯町字大沼町4,140.669347,41.971954,1903-06-28,,0,1110108 101110109,1110109,大沼公園,,,11101,1,041-1354,北海道亀田郡七飯町字大沼町85,140.669758,41.980958,1907-06-05,,0,1110109 111110110,1110110,赤井川,,,11101,1,049-2142,茅部郡森町字赤井川,140.642678,42.003267,,,0,1110110
②join20191227.csv
どの駅とどの駅が隣接しているかを確認するための情報が格納されたCSVファイル
→①で取得した駅と隣接する駅を取得します
※情報量が多いため、全データについては下記URLをご参照ください。
https://drive.google.com/open?id=1CmOfR_j_a7FJ0QgHi568fk7SYMXI67J-
CSV
1line_cd,station_cd1,station_cd2 21002,100201,100202 31002,100202,100203 41002,100203,100204 51002,100204,100205 61002,100205,100206 71002,100206,100207 81002,100207,100208 91002,100208,100209 101002,100209,100210 111002,100210,100211
上記ファイルを踏まえ、①でまずはstationcodeを読み込み、②で①のstationcode(stationcode1)に
対応したstationcode2を参照し、ペア(キー:stationcode(=stationcode1) 、値:stationcode2)に
なるように、コンソール上でハッシュとして出力したいです。
発生している問題・エラーメッセージ
CSVファイルの読み込み、隣接する駅同士のペアリングまで実装しました。
しかし、いざ実行しようとすると構文エラーが発生してしまい、動かすことができません。
→syntax error, unexpected end-of-input, expecting end
該当のソースコード
Ruby
1require "csv" 2 3station_codes = {} 4CSV.foreach("station20191227.csv", headers: true) do |row| 5 station_codes.store(row[0]) 6end 7 8CSV.foreach("join20191227.csv", headers: true) do |row| 9 station1 = row[1] # station1 10 station2 = row[2] # station2 11 12 # station_codesのkeyの中からstation1を探す 13 station_codes.keys.each do |key, value| 14 end 15 # もしstation1がstation_codesのkeyに含まれていたら 16if station1 == key 17 # 見つけたkeyのvalueにstation2を追加する 18value << station2 19 # 含まれていなかったら何もしない 20break 21end
回答2件
あなたの回答
tips
プレビュー