pagetakaBlog

最近リフォームと鳥取県日南町の記事多め。写真、PC、ネット等の話題も

東証株式相場表:データがあるけど拾えてない7銘柄の対策…前進…か…。

前説:東証株式相場表(日報、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スクリプト、イロイロ手直ししたけど、テスト用に書き込んだ部分がたくさんあって、それを消し、多少でも見やすくなったと爺が思えた頃(はて、いつのことやら)に改めて公開できれば、と。

以上、備忘録でした。