前回に引き続きF#をいじります
これは僕の持論なんですけど、F#って人生見失うときにはじめちゃいがちな気がするんですよね。あくまでこれは僕の持論で会って心身ともに健康な皆様には関係ありませんが……。ということで今回はCSVいじっていこうと思います。なんとかプロバイダーとか言うのがいい感じになんとかしてくれるためコード記述量が少なくて済むという幻聴をキャッチしたからです。皆さんはこんな幻聴を聞かないように心身健康でいようね。
CSVをいじる
てなわけで件のなんとかプロバイダーはこれです。
F# Data: CSV 型プロバイダー
サンプルのやつリンク切れしてる……。
まあいいや、とりあえず何か作りたいのでここの国民の祝日データを取得してみることにします。
国民の祝日について - 内閣府
https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv
書いた!
open FSharp.Data // CSVの取得 // https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv let sjis = System.Text.Encoding.GetEncoding(932) let Naikaku = CsvFile.Load("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv", encoding=sjis).Cache() for row in Naikaku.Rows do //printfn "%A" row.Columns // 中身の確認 if System.DateTime.Parse(row.GetColumn 0) > System.DateTime.Now then printfn "%sは%sの日です" (row.GetColumn 0) (row.GetColumn 1)
文字コードとかのそういう本質的でないとこの操作に手間取ってしまった……。出力にあるように「○○は○○の日」ですって出すやつできました。そのまま吐き出すと昭和30年からデータ拾ってくるので現在日以降のデータを拾うようにしてます。
出力
2020/1/13は成人の日の日です
2020/2/11は建国記念の日の日です
2020/2/23は天皇誕生日の日です
2020/2/24は休日の日です
2020/3/20は春分の日の日です
2020/4/29は昭和の日の日です
2020/5/3は憲法記念日の日です
2020/5/4はみどりの日の日です
2020/5/5はこどもの日の日です
2020/5/6は休日の日です
2020/7/23は海の日の日です
2020/7/24はスポーツの日の日です
2020/8/10は山の日の日です
2020/9/21は敬老の日の日です
2020/9/22は秋分の日の日です
2020/11/3は文化の日の日です
2020/11/23は勤労感謝の日の日です
はい、こんなんなりました。そんなわけで直近のお休みは成人の日ということがわかりました。へーそうなんだ!すごーい。
おわり