このページは、Rubyレシピブック
(詳細) をPythonで書こうというたくらみです。内容は当たり前のことばかりですが、たまにしかコードを書かない人間は、こうしたことがわからなくてイライラしてしまいます。10行くらいのプログラムならさっと見てさっとかけるようにするのが目標です。
2008年1月21日19:00 ロボットによる荒らし対策を施しました。
レシピブック作成にご協力いただける方がいらっしゃいましたら、最初にユーザー登録をお願いします。
レシピブックを修正する際は、一度ログインをしてください。ログインすると右肩の部分に編集の項目が現れます。
記述方法は、structuredText もしくはreStructuredText でお願いできればと思います。
WEB上の情報
- Python クイックリファレンス日本語訳
- pythonライブラリリファレンス
- pythonチュートリアル
- Perl Cookbookのpython版
- Dive Into Python
- Python入門
- Pythonちょろわざ集
- Python 早めぐり
- FFTT はじめましてPython
- アクセンス・テクノロジー Python 情報
- 基礎文法最速マスター
- Python初心者によるPythonのいいところ、はまりどころのまとめ
- 2chのpythonお勉強スレッドまとめWiki
- http://builder.japan.zdnet.com/tag/Python/
- http://boxheadroom.com/wiki/?Python
- Python recipes in ActiveState Code
書籍
開発環境
- PythonMatrixJp で紹介されている PyScripter がすばらしい
- Eclipse+PyDev
Python Recipe Book
1章 Python の文法
- 001:リテラル
- 002:演算子
- 003:変数と定数
- 004:代入
- 005:文の区切り
- 006:コメント
- 007:真偽値と条件分岐
- 008:繰り返し
- 009:メソッド呼び出し
- 010:ブロック
- 011:関数定義
- [012:関数の呼び出し制限]?
- 013:クラス定義
- 014:モジュール定義
- 015:特異メソッド
- 016:例外処理
- [017:aliasとundef]?
- 018:予約語
2章 文字列
- 019:適切な文字列リテラルを選ぶ
- 020:デフォルトの文字コードを設定
- 021:文字コードを変換する
- 022:文字コードを推測する
- 023:文字列を複製する
- 024:文字列を反復する
- 025:文字列の長さを得る
- 026:文字列を検索する
- 027:正規表現が文字列の先頭・末尾にマッチするか調べる
- 028:単語にマッチさせる
- 029:特定の文字コードで正規表現マッチを行う
- 030:正規表現「.」に\nをマッチさせる
- 031:前回マッチした部分の続きからマッチさせる
- 032:特定の文字・文字列の出現回数を調べる
- 033:文字の出現頻度を調べる
- 034:文字列を比較する
- 035:空白にマッチさせる
- 036:文字列が空行か調べる
- 037:数値を表す文字列か調べる
- 038:文字列を数値に変換
- 039:大文字か小文字か調べる
- 040:大文字と小文字を変換する
- 041:文字列の一部を取り出す
- 042:正規表現にマッチした部分を取り出す
- 043:正規表現にマッチした部分の前後を取り出す
- 044:特定の文字を含む部分の長さを調べる
- 045:文字列を段落に分ける
- 046:文字列を行に分ける
- 047:文字列を単語に分ける
- 048:正規表現で文字列を分割する
- 049:文字列を文字ごとに処理する
- 050:文字列をバイトごとに処理する
- 051:文字列を連結する
- 052:文字列の一部を置換する
- 053:文字をエスケープする/エスケープを外す
- 054:文字列の一部を取り除く
- 055:行末の改行を取り除く
- 056:文字列から半角、全角空白を取り除く
- 057:タブと半角空白文字を変換する
- 058:インデントを変更する
- 059:ヒアドキュメントの本体をインデントして書く
- 060:文字列の末尾に文字列を追加する
- [061:文字列の一部を破壊的に削除する]?
- [062:文字列の途中に破壊的に文字列を挿入する]?
- 063:文字と文字コードを相互変換する
- 064:文字列をn文字ずつに分割する
- 065:文字列を最大nバイトに切り詰める
- 066:文字列を最大n文字に切り詰める
- 067:文字列を最大n桁に切り詰める
- 068:文字列の一部を特定の文字で埋める
- 069:メッセージダイジェストを作成する
- 070:文字列が正規表現として正しいか調べる
- 071:正規表現のメタ文字をエスケープする
- 072:文字列が複数の正規表現のすべてにマッチするか調べる
- 073:正規表現を分割して記述する
- [074:正規表現集]?
- [075:文字列を段落ごとに整列する]?
- 076:いろいろなテキストフォーマットを解析
- 077:カンマ区切りCSVを処理する
- 078:XMLを解析する
- 079:YAMLを解析する
- 080:HTMLを処理する
- [081:単語を補間する]?
- [082:有効なメールアドレスか調べる]?
3章 配列とハッシュ (とリスト)
- 083:配列を作成する
- 084:配列を複製する
- 085:多次元配列を作成する
- 086:配列や辞書(ハッシュ)の全要素を順に処理する
- 087:複数の配列を並行処理する
- 088:多次元配列をループする
- 089:配列の要素を取得
- 090:配列の要素を変更
- 091:配列の要素を削除する
- 092:配列の先頭末尾に要素を追加
- 093:配列の先頭末尾の要素を除去
- 094:配列の要素を置換
- 095:配列の要素をランダムに取得する
- 096:配列の要素数をシャッフルする
- 097:配列の要素数を調べる
- 098:配列の要素の出現回数を調べる
- 099:配列から複数の要素を一度に取得
- 100:配列のインデックスと配列のペアを取得する
- 101:同じ値で配列の要素を埋める
- 102:配列から重複する要素を取り除く
- 103:配列から条件を満たす要素を取得する
- 104:配列の要素を検索する
- 105:2つの配列を比較する
- 106:2つの配列に共通する要素を調べる
- 107:2つの配列の差を取る
- 108:配列を連結する
- 109:配列の要素の順序を逆転する
- 110:一定範囲の整数を要素とする配列を作成する
- 111:配列をカンマで連結して文字列に
- 112:バイナリサーチを行う
- 113:ハッシュのキーになるクラスを作る
- 114:ハッシュに要素を追加する
- 115:ハッシュ内にキーが存在するか調べる
- 116:ハッシュの要素を削除する
- 117:ハッシュの内容を表示する
- 118:ハッシュの要素を挿入した順に取り出す
- 119:1つのキーに複数の値が対応するハッシュを作る
- 120:ハッシュのキーと値を入れ替える
- 121:配列やハッシュをソートする
- 122:ハッシュをマージする
- 123:2つのハッシュの両方にあるキー/一方にしかないキーを見つける
- 124:デフォルトの値を設定する
- 125:巨大で疎な配列を使う
- 126:コレクションのような性質を持つクラスを作る
- 127:スタックやキューを使う
4章 ファイルとディレクトリ
- 128:ファイル名を構成要素に分解する
- 129:相対パスから絶対パスを求める
- 130:パス名がパターンにマッチするか調べる
- 131:ディレクトリとファイル一覧を取得する
- 132:現在のディレクトリ名を取得する
- 133:現在のディレクトリを変更する
- 134:実行しているスクリプトのパスを求める
- 135:ファイル名を変更する
- 136:ファイルをコピーする
- 137:ファイルを削除する
- 138:ファイルが読み書き可能か調べる
- 139:ファイルの存在を調べる
- 140:ファイルの属性を取得する
- 141:ファイルの属性を変更する
- 142:リンクを作成する
- 143:二つのファイルが同じか調べる
- 144:ディレクトリを作成する
- 145:ディレクトリ内のファイルを再帰的に処理
- 146:ディレクトリを再帰的にコピーする
- 147:ディレクトリを削除する
- [148:ファイル操作を事前に確認する]?
- 149:名前がぶつからないファイルを作成
5章 入出力
- 150:ファイルを開く
- 151:ファイルを行単位で処理する
- 152:ファイルの内容を読み込む
- 153:新しいファイルを作成する
- 154:ファイルの最後にデータを追加する
- [155:ワンライナでファイルを更新する]?
- [156:出力操作とファイルの更新を同期させる]?
- 157:ファイルの行数を数える
- 158:行単位にファイルを末尾から処理
- 159:成長するファイルを追いかけながら読む
- 160:テンポラリファイルを作成する
- 161:ファイルをロックする
- 162:ファイルを16進ダンプする
- 163:ファイルに一行挿入する
- 164:ファイルにバイナリモードで書き込む
- 165:固定長レコードを処理する
- 166:ファイルのサイズを切り詰める
- 167:ファイルの先頭のn行を削除する
- 168:ファイルの末尾のn行を削除する
- 169:標準入出力をファイルにつなぎ換える
- [170:IOオブジェクトを複製する]?
- [171:printfで出力を整形する]?
6章 数値
- 172:数値をフォーマットする
- 173:ビット演算を行う
- 174:2進、8進、10進、16進の各表現を相互に変換
- 175:数値を三桁ずつ区切る
- 176:回数を指定して処理を繰り返す
- 177:最大値最小値を求める
- 178:数値の総和を求める
- 179:絶対値を求める
- 180:割り算の余りを求める
- 181:べき乗を求める
- 182:最大公約数と最小公倍数を求める
- 183:平方根を求める
- 184:三角関数を計算する
- 185:直行座標を極座標に変換する
- 186:対数計算を行う
- 187:浮動小数点数を丸める
- 188:浮動小数点数を比較する
- 189:乱数を得る
- 190:行例を使う
- 191:複素数を使う
- 192:有理数を使う
7章 日付と時刻
- 193:現在の日時を調べる
- 194:日時から月や曜日を調べる
- 195:日時とエポック秒を相互に変換する
- 196:二つの日時の差を求める
- 197:日月をフォーマットする
- 198:文字列を日時に変換する
- 199:1月1日からの通算日を求める
- 200:うるう年を判定する
- 201:月末の日付を求める
- 202:休日を判定する
- 203:今月の第3月曜日を求める
8章 環境とのかかわり
- 204:Pythonスクリプトをコマンドにする
- 205:コマンドにしたPythonスクリプトを一時的にオプションつきで実行する
- 206:コマンドラインオプションを得る
- 207:コマンドラインオプションを解析する
- 208:環境変数にアクセスする
- 209:コマンドとしてもライブラリとしても使えるようにする
- 210:Pythonのライブラリローダを制御する
- 211:pythonスクリプトをデバッグする
- 212:ユーザやグループに関する情報を得る
- 213:ユーザID・グループIDを切り替える
- 214:Windowsレジストリにアクセスする
- 215:システムのライブラリ関数を呼ぶ
9章 プロセスとプロセス間通信
- 216:スクリプトを一時的に停止する
- 217:スクリプトの処理時間を計測する
- 218:コマンドを実行する
- 219:子プロセスを生成する
- [220:シグナルハンドラを設定する]?
- 221:デーモンになる
- 222:Windowsアプリを操る
- 223:ローカルホスト名を得る
- 224:ホスト名とIPアドレスを変換する
- 225:TCPクライアントを作る
- 226:TCPサーバを作る
- 226:FTPクライアントを作る
- 227:HTTPクライアントを作る
- [228:別プロセスのPythonオブジェクトにアクセスする]?
10章 CGI
- 229:フォームから入力された値を取り出す
- 230:クエリ文字列を取り出す
- [231:セッションを使用する]?
- 232:クッキーを処理する
- 233:メタ変数を参照する
- [234:HTTPヘッダを出力する]?
- 235:URLをエンコードする/デコードする
- 236:HTMLをエスケープする
- [237:汚染モード(taintモード)を使う]?
- [238:クロスサイトスクリプティングを防ぐ]?
- [239:HTMLにPythonのスクリプトを埋め込む]?
- 240:ファイルをアップロードする
11章 オブジェクト
- 241:オブジェクトが同じか調べる
- 242:オブジェクトを複製する
- 243:オブジェクトのクラスを調べる
- 244:オブジェクトを文字列に変換する
- 245:オブジェクトを数値に変換する
- 246:オブジェクトを配列に変換する
- 247:オブジェクトをファイルに保存する
- 248:多重継承する
- 249:メソッドを委譲する
- [250:ブロックを委譲する]?
- [251:StringやArrayとして扱えるクラスを作る]?
- 252:無名関数を使う
- [253:メソッドをオーバーロードする]?
- 254:キーワード引数を使う
- [255:モジュール関数を定義する]?
- 256:クラスメソッドの別名を定義する
- [257:インスタンス変数をクラスごとにプライベートにする]?
- 258:オブジェクトにメソッドが存在するか調べる
- 259:オブジェクトに定義されているメソッドのリストを得る
- 260:互換性を保ったままメソッド名を変える
- 261:互換性を保ったまま引数の個数を変える
- [262:互換性を保ったままブロックをつける/外す]?
- 263:互換性を保ったままクラス名を変える
- 264:互換性を保ったままライブラリ名を変える
- [265:新しいPythonのメソッドを古いPythonでも使う]?
- 266:ファイルをPythonスクリプトとしてロードする
- 267:文字列をPythonスクリプトとして実行する
- [268:スクリプトファイル名・行番号をすり替える]?
その他
GUI
Zope
ページの表示が遅いのは -- Mon, 30 May 2005 20:58:58 +0900 reply
URLエンコードのせいのような気がしますね。
といっても特に回避策があるわけじゃありませんが・・・