銀月の符号

Python 使い見習いの日記・雑記

Python

BeautifulSoup を使ったコード片のメモ

昔作ったはずなんだけど、コードをなくしたらしい。なので作り直した。はてな上にメモしておけば、今度こそなくさない?(いや、ちゃんとバックアップ取れよオレ) BeautifulSoup とは? HTML, XML パーサ。メモリにツリー状のデータを構築するタイプ。標準…

Python レシピ増加、コレクションのような性質を持つクラスを作る

doloop さんが 「126:コレクションのような性質を持つクラスを作る」を書いてくれました。ありがとうございます。特殊メソッド __getitem__ らだけでなく、 Python 3.0, 2.6 から導入が進んでいる ABC (抽象基底クラス)の知識も得られる、二度おいしいレシ…

Python レシピ追加、文字列の一部を特定の文字で埋める

「068:文字列の一部を特定の文字で埋める」を追加。Ruby レシピブック 第2版 には Password: PythonRecipe のようなテキストを Password: ************ に置き換える例が載っていたので、これに則ったコードを。 # coding: utf-8 import re def hide(patter…

Python レシピ追加、特定の文字コードで正規表現マッチを行う (鬼車のラッパー ponyguruma の紹介あり)

「029:特定の文字コードで正規表現マッチを行う」を追加。正規表現に限らず、テキストを扱うにはユニコード文字列を使うようにするのがベター、といった内容。でも、これで終わるのもなんだし、ユニコード文字列への変換を行わずに何とかする方法も提示して…

Python レシピ追加、変数と定数

「003:変数と定数」を追加。役に立たない文章の予感。言語仕様を知るにはこんなのより原典(http://docs.python.org/reference/executionmodel.html#naming-and-binding)とソースコードにあたるべきだから。書いた際に自分の復習になったのはたしかだけれども…

イテレータブルのある要素より後ろの要素を取り出す2

Python「インデクサとは違うのだよ、インデクサとは!」 - つまみ食う リベンジ。どうやら意図するところが「ある要素が複数あった場合、最後に現れたものの後ろ」のようで誤解していました。「最初に現れたものの後ろ」ではないのですね。これは、どうした…

イテレータブルのある要素より後ろの要素を取り出す (itertools.dropwhile)

Python「インデクサとは違うのだよ、インデクサとは!」 - つまみ食う を読んで。これは itertools モジュールの楽しさを伝える好機、と見たので。 itertools.dropwhile 「ある要素より後ろの要素を取り出す」は「ある要素以前を捨てる」と言い換えることが…

Python レシピ追加、いろいろなテキストフォーマットを解析

「076:いろいろなテキストフォーマットを解析」を追加。 PythonRecipe への書き込みは 5 ヶ月ぶり。内容は「日付と時刻」、「CSV, XML, YAML, HTML」、「URI (URL)」、「メール」、「Python のソースコード」の読み込み方法、もしくは方法が書いてあるところ…

暦に興味を持ったので、旧暦計算プログラム QREKI.AWK を Python に移植してみた

前回、前々回と祝日について触れた際、暦に興味を持ったので Wikipedia の暦法関連を読み漁っていた。天文の話だけでなく、歴史や文化の話も混じっていておもしろい。よくわかってなかった旧暦についても知ることができた。狭義の旧暦は今の日本の暦(グレゴ…

祝日判定 jholiday.py の C エクステンション

前回に引き続き、祝日判定を。 目的 ただ、 jholiday.py を爆速にしてみたかった(こういうの目的って呼ばないって)。何十万件といった量を扱わない限り「一瞬」で終わる処理のため、自分には速くすることによるメリットはない。ただ、どこまで速くできるの…

祝日判定 jholiday.py の改良

2010/3/27 文章全般を見直した。追記を繰り返した結果、読みづらいものとなっていたため。先日、画像にカレンダーを描画するスクリプトを作ったのだけれども。カレンダーには祝日情報が要る、と思ったのが発端。そして、祝日判定スクリプト jholiday.py に再…

PIL が OpenType のプロポーショナルフォントを正しく読めていない?

font.getsize で OpenType の 'i' と 'w' を調べてみたのだけれど、なんで幅同じなんだろう? たとえば IPA Pゴシック。 >>> from PIL import ImageFont >>> font = ImageFont.truetype(u'ipagp.otf', 24) >>> font.getsize(u'i') (24, 24) >>> font.getsiz…

画像にカレンダー出力

この前使った calendar モジュールとさらに前(ブログには未記述)に使った PIL をあわせて使ったら、絵にカレンダーが描けそうだったのでやってみた。壁紙などの画像に直接カレンダーを描くのは考えが古い気もしたけれど、パソコン覚えたてのころに世話にな…

カレンダー出力

ちょっと HTML でカレンダーつくる必要に迫られたのだけれども、手打ちすると td タグの海の中に誤りが混入しそうな気がしたので(弱気すぎるだろ、オレ)。ここは半自動生成したいなと思った。なにか作っておけば、もし翌月の分を作る時、楽ができるという副…

Loto6 の過去結果も取得してみた

ロト6買ったことは1度しかないシュンが作る、ロト6結果取得スクリプト。先日のものを一度崩してやりなおし。過去のものも得られるようにしてみた。あと、 HTML の解析方法を正規表現から BeautifulSoup に変更。 HTML のことは HTML パーサーに任せてみた…

Re:Loto6の最新結果をPythonで取得してみた

『Loto6の最新結果をPythonで取得してみた - 牌語備忘録 -pygo』を見かけたので、 HTML の解析方法を正規表現 1 つだけとなるようにしてみた。シンプルさはかえって失なわれている気がする。正規表現ができてしまえば、マッチオブジェクトの group メソッド…

東方星蓮船で遊ぶ

『東方星蓮船』の曲データを Python 言語で取り出してみる、という遊びの紹介。 用意するもの 東方星蓮船 〜 Undefined Fantastic Object. thbgm.dat のどこからどこまでが曲なのかという情報 Python 東方星蓮船は同人ショップから(体験版なら無料で DL 可…

居眠り床屋問題解いたけれども

multiprocessing モジュールのマニュアル読みつつ、「居眠り床屋問題」をとりあえず解いた。けれども id:sumim さんからおそわった Axon.STM とかをつかってないので、もうしばらくこの問題とは付き合うことになりそう。要勉強。 # coding: utf-8 u"""居眠り…

Python Sapporo ? から帰宅

感謝 今月の Python 札幌は中止だったのだけど、それにもかかわらず 3 名の勇者さまが簡易オフしてたので乱入。 id:sumim さんとお話しする機会に恵まれまして、 Smalltalk 愛、プログラミング愛を見せつけられました。あぁ、それとくらべてオレの甘いこと。…

Python 3 の bytes 型は数値の配列

自作のおもちゃライブラリを 2to3.py して Python 3 で動かしてみたが、うまくいかなかったものがあった。ちょっと調べていくと原因が見つかったのでメモ。bytes にインデックスアクセスしたりイテレータを要求する箇所で用いたりすると int が返る。 Python…

メタクラスの世界へようこそ! 前編

「http://d.hatena.ne.jp/rockRicefield/20090917/1253165583」を受けて。北の地の元ファゴット吹き、現 Python 使い見習いの fgshun 、メタクラスについて語ってみます。つっこみは大歓迎です。 クラスファクトリ type は関数ではなくてクラス type 関数を…

特定の拡張子のついたファイルを取得してみた改良案

元ネタは「特定の拡張子のついたファイルを取得してみた - 牌語備忘録 -pygo」。たぶん、牌語備忘録さんがさがしていたのは fnmatch.filter だと思ったのでトラックバックを。複数のほうはこれといったものはないけれど、 glob じゃなくて os.listdir と fnm…

AviUtl を Python から自動操縦する

あじさんの「AviUtlControl」と同じ動作を Python ctypes のみで目指してみる、そんな試み。いや遊び。 4 日前から作っていたが、形になってきたので晒してみる。 PyAviUtlLib(2009/9/20 更新) 名前は…pyaviutl.py 。うーん、考え直したほうがいいかも。 pya…

__new__ の調査便乗

RRF言語研究所さんの『http://d.hatena.ne.jp/rockRicefield/20090915/1253002685』に惹かれて。 Python 暦浅いはずなのにもう __new__ の魔窟へ突入とは。すごいです、友達になってください><そして自分も __new__ について復習してみた。 クラスオブジェ…

AviUtl を Python から自動操縦する、のか?

動画のエンコードの際、世話になっているソフト、 AviUtl。これを Python から操ってみようと思ったのがことの始まり。とはいえ、便利なものがすでに世に存在している。 「AviUtl Control」 。作者であるあじさんに感謝。「AviUtl Control」は AviUtl をコマ…

形態素解析エンジン MeCab 0.98pre3 野良ビルド

MeCab 0.98pre3 の Python バインディングを Windows XP Pro, MinGW, Python 2.5.4 and Python 2.6.2 という環境でコンパイルしてみた。晒してみる。方法は昨年11月の『形態素解析エンジン MeCab 0.97 とその Python バインディングを MinGW でビルドする - …

メモ、 Itertools Recipes

先日はコレの grouper の存在を知っておけば、もしくは体得していれば 10 分どころか 3 分でいけたのに。ということでリンク張っておく。 Python 3.1版(英語) Python 3.0版(英語) Python 2 最新版 (2009/9/7 現在 2.6)(英語) Python 2.5版 この節、地…

4年前の、そして半年前の簡単な問題を10分で解いてみた

寝る前に、ちょっとしたプログラミング問題を見つけたので挑戦してみた。 本日の目玉を先に、一言で 『データ列を長さnのグループにまとめる常套句』があることを知った。衝撃的だった。 問を提示しているサイト 簡単な問があったのでPythonでやってみた - …

Python 2 と Python 3 のユニコード文字列、バイト列の違いメモ

Python 3 の数値をバイト列に変換する方法は bytes([i])*1。いままでとあきらかに違うことを知ったのが発端。 >>> bytes([97]) b'a' ユニコード文字列、バイト列の違いを調査開始。 型の名称とリテラル表記 Python 2.6 は新旧両方の書き方ができるものも。 P…

標準コーデックとバイト列

半年ほど前に『「XOR をとるコーデック」のファクトリ - 銀月の符号』なんて作ったなーというのを思い出して。ふたたび遊んでみようとドキュメントを読んでいたところ Python 3 では標準コーデックの種類が減っているのに気づいた。 2.6の標準コーデック 3.1…