Perl入学式 in 東京 第5回 ピザ会での課題
Perl入学式 in 東京では講義の後にピザ会を実施し、ピザとジュース飲んで雑談する時間を設けています。
興が乗ってくると、id:xtetsujiさんが課題を出し、会場にあるプロジェクターを使って、ライブコーディングを行ったりしています。
昨日の課題は、NHKの首相動静のCSVをPerlでパースしてみる、というものでした。
まず、このファイルの文字コードですが、UTF-8ではありません。cp932でもありません。
$ file 201808.csv 201808.csv: Little-endian UTF-16 Unicode text, with CRLF, LF line terminators
UTF-16、初めて遭遇。
そしてこのファイル、拡張子こそcsvですが、タブ区切りです。だったら拡張子はtsvにするべきでは。
さらに、複数行にまたがる、日付が違う、月が違う、など、酷いファイルという他ない出来です。
首相動静CSVの8月分でうまくパースできないと思ったら、8月7日の一部だけ二重引用符で囲まれてんじゃんかよー / 検索&ダウンロード | 総理、きのう日何してた? | NHK政治マガジン https://t.co/BPOjqlbyzp pic.twitter.com/Ncv2F5hBKj
— sironekotoro (@sironekotoro) August 26, 2018
というか、この8月分のCSV、23日分が21日で記録されている。もうこの時点でまともなパースは諦めるんだけど、NHKのページの方は23日の記録として表示されている。どういう読み込みして表示してるんだ?もしかしてWeb表示とCSVは特に連動してない!? pic.twitter.com/u2feJN1nN9
— sironekotoro (@sironekotoro) August 26, 2018
この首相動静CSV、なんで9月のデータが入ってんの・・・もしかしてこの自称CSVファイル手打ちしてんの? pic.twitter.com/11m1MN6j8d
— sironekotoro (@sironekotoro) August 26, 2018
とりあえず、できるところまで書いてみたものがこちらです。
NHKの首相動静 自称CSVファイルをPerlでパースしようとするも、元のファイルが間違ってるので出力も間違ってるという悲しいオチ — Bitbucket
NHKのご意見フォームにどうにかしろ!って意見あげるつもりです。