- 前説:東証株式相場表(日報、PDF)約3800銘柄のうち、7銘柄データピックアップできていなかった。
- 正規表現とPython.replaceを工夫し、何とかなったかしら……(不安だけど)。
- まだ、Pythonスクリプト、整理できてません。
前説:東証株式相場表(日報、PDF)約3800銘柄のうち、7銘柄データピックアップできていなかった。
pagetaka.hatenablog.jp
東証株式相場表(日報)は、PDF形式で公表されています。これをDLし、PDFMinerで解析、CSVに仕立てようという、耄碌爺の目論見(ほぼ「妄想」)です。
データがあるけど拾えてない7銘柄には、一定の特徴がありました。PDF上では、単頁の最後の銘柄が6銘柄、もうひとつは「PRO市場」直前の銘柄でした。
正規表現とPython.replaceを工夫し、何とかなったかしら……(不安だけど)。
Pythonスクリプト上での見直しは、2カ所でした。
1:正規表現でヒットする範囲をゆるくしてみた
iter_pos:正規表現「finditer」で得られる文字位置格納用変数
text_page:正規表現で処理する対象(文字列の変数)
#改修後 iter_pos = re.finditer(r'\t[0-9]{4}\t{1,3}.', text_page) #改修前 iter_pos = re.finditer(r'\t[0-9]{4}\t',text_page)
改修前('\t[0-9]{4}\t')は、タブ、数字4桁、タブ、の並びでヒットしたらその位置を変数に収めるという「正規表現」でした。これを、タブ、数字4桁、タブ(1~3)、任意の1文字、という組み合わせに変えました。どちらも結果的にはあまり変化が無いように思えますが、試してみた東証株式相場表(日報、PDF)では「改修後」の方が改善した、という爺の実感(=爺の鈍感)から…ええ。なので「これからずっと有効かどうかはよくわかりません」という逃げ口上付きです。
2:「,」数字3桁区切りコンマ、削除タイミングを遅くした。
同じように見える「数字」をDB(データベース、今回はMySQL)に収めるとき、文字なのか数値なのかは大問題と思っている爺です。それで、「,」=数字3桁区切りコンマを削除する「text_page.replace(',','')」というのをやってました。結果は期待通りなのですが、想定外の問題も発生しました。
銘柄コードは4ケタの数字(数値:INT)です。PDF内はほぼ数字です。3桁区切りのコンマを取ったら、銘柄コードとの見分けがつかないことになる例が発生していました。
例えば、売買代金(単位千円)「8,228」から3桁区切りのコンマを取ったら、「8228」になり、銘柄コード桁数と一致します。7月27日の日報PDFで起こっていたデータが拾えてない7銘柄の大部分は同様例でした。
銘柄コードと区別できるよう、3桁区切りのコンマ削除のタイミングを遅くして、Pythonスクリプトを走らせたところ、爺の期待通り(ほぼ「妄信」)になりました。
まだ、Pythonスクリプト、整理できてません。
およそ、今回の課題は先が見えてきました。公開を止めたPythonスクリプト、イロイロ手直ししたけど、テスト用に書き込んだ部分がたくさんあって、それを消し、多少でも見やすくなったと爺が思えた頃(はて、いつのことやら)に改めて公開できれば、と。
以上、備忘録でした。