今川館

都内勤務の地味OLです

2011-01-01から1年間の記事一覧

かけ算演算子の挙動を定義する -- Pythonの特殊メソッド

かけ算に順番が必要?必要ではない? かけ算に順番が必要である・必要ではない という話が世間では話題になっているようです。かけ算の5×3と3×5って違うの? - Togetterまとめ そういえば掛け算にはそんなルールがあったなTwitterのタイムラインでも上記の話…

re.subにはcallableなオブジェクトを渡せる

python-mini-hackathonで教えてもらった。 知らなかった。以下、例を殴り書き。 import re def main(): text = """ name = %NAME% age = %AGE% location = %LOCATION% """ pattern = r"%([A-Z]+)%" values = { "NAME" : "easy", "AGE" : "13", } def fn(matc…

python-dateutilの使い方

pythonの日付処理モジュールとしてdatetimeパッケージがあるが、dateutilパッケージのモジュールがもっと色々面倒を見てくれるのでちょっと調べてみた。 dateutilがやってくれること 沢山あるけど以下、わたしが使いたいと思った機能を抜粋。 月末を算出して…

grepに-rオプションがあることを今日知った

今までずっとfindとxargsを使っていた 今まで、特定のディレクトリを再帰的に辿って指定したパターンにマッチする文字列を含むファイルを探すときはfindとxargsを使っていた。例えば、カレントディレクトリ以下を辿って"Linux"という文字列を含むファイルを…

enumerateの代わりにitertoolsを使ってみる

itertoolsのについてメモ -- 似非言語オタクの戯言 http://d.hatena.ne.jp/aitahoge/20110517/1305611498この記事を読んでいて気づいたこと。 count(start=0, step=1) 名前のとおり、next()が呼び出される度にカウントされる。 izip()との併用とか、enumerat…

テストデータ作成のヒント: 「タプル記法」のすすめ

テストデータをどうやって作りますか? テストコードを書くとき、テストデータを投入することが多いと思うが、普段皆さんはどうやってテストデータを作っているのだろう。例えばDjangoは所定のモデルのデータをjsonやxml形式で出力して利用するfixtureという…

マルチバイト文字を含む正規表現のパターンを定義するときはunicodeでパターンを書かないと予期せぬ結果をもたらす

adminuser.pyを書いていたときにはまったのがこの問題。 reモジュールを使って半角と全角のスペースで文字列をsplitしようとしたのだが、 正規表現パターンをstrで渡してしまいおかしな文字列分割が行われてはまった。 regex1 = re.compile(r"[ ]+") regex2 …

pythonのunittestで例外の送出を検証する場合はassertRaises

pythonのunittest.TestCaseで例外の送出を検証したいときは TestCase.assertRaises TestCase.failUnlessRaises でやる。 試しに上記メソッドで検証した場合と独自にそれっぽい検証メソッドを定義した場合を比較してみる。 # -*- coding:utf-8 -*- import uni…

minimockの使い方

pythonのモックとしてminimockというライブラリがある。 日本語のドキュメント・ブログが見当たらないので使い方をここに書いておく。 minimockを構成するモジュール mock関数 -- モックを当てる。 restore関数 -- 当てたモックを解除する。 Mockクラス -- m…