‘programming’ カテゴリーのアーカイブ

MySQLが出力するCSVファイルをPythonで読みたい件

2010年3月8日 月曜日

ケースとしてはレアな気がしますが、MySQLのSELECT 〜 INTO OUTFILEで出力したCSVに対して、処理をしたい時があります。僕の場合はpythonでやるわけですが、MySQLが出力するCSVの形式がpythonデフォルトの物と違うようでハマったのでメモしておきます。

(続きを読む…)

Pythonで日本語を含んだリストと辞書をpretty printしたい件

2010年3月5日 金曜日

Pythonでコード書いてると、1回は残念だなぁと思うポイントとして表題の件があると思います。具体的には以下です。

# リストも辞書も出力がお世辞にも良いとは言えない。。
>>> print ['あ', 'い', 'う']
['\xe3\x81\x82', '\xe3\x81\x84', '\xe3\x81\x86']
>>> print {'title':'ねじまき鳥', 'author':'村上春樹'}
{'author': '\xe6\x9d\x91\xe4\xb8\x8a\xe6\x98\xa5\xe6\xa8\xb9', 'title': '\xe3\x81\xad\xe3\x81\x98\xe3\x81\xbe\xe3\x81\x8d\xe9\xb3\xa5'}

日本語がバイト表現な上、全要素が1行で表示されています。これではちょっとprintデバッグするにも萎えますよね。複雑な辞書を出力した場合なんかは、出力された文字列の整形にかなりのパワーを裂かれること請け合いです。

(続きを読む…)

[objective-c] FMDatabaseの使い方メモ

2010年2月28日 日曜日

ここ2、3週間久々にiphoneを弄っているのですが、GCが入ってない環境でのプログラミングはやらないと衰えるんですね。LLに慣れると辛いです。細かい事にまで気を使う必要があるので疲れますね。ブログ書きながらリハビリしようと思います。
さてiPhoneではバックエンドにSQLiteを使えるんですが、そのラッパーのFMDatabaseの使い方をまとめておきます。

(続きを読む…)

浮動小数点の情報落ちを追って見た

2010年2月19日 金曜日

今日topcoderの問題を解いてて、浮動小数点の誤差ではまりました。問題を単純化したコードが以下になります。

#include <iostream>
using namespace std;
 
int main(int argc, char** argv) {
    double small = 1e-18;
    double big   = 1;
    double added = small + big;
    cout << added << endl;  // 1が出力される。(small分が切り捨てられてる)
}

加算を行った結果、小数点以下の値が切り捨てられています。一瞬何が起こったのか解らなかったのですが、折角なので追ってみる事にしました。

(続きを読む…)

Pythonで辞書のキーに正規表現を使いたいという話

2010年2月12日 金曜日

配列や連想配列をディスパッチテーブルとして利用していると、キーに正規表現を使いたくなる事があります。perlだと既にRegexp::Assembleというモジュールを使う方法が書かれていますが、僕はpythonで書きたい訳です。

(続きを読む…)

BeautifulSoupでスクレイピングのまとめ

2010年2月10日 水曜日

何度かBeautifulSoupについては書いているのですが、未だに使い方が覚えられずにイライラします。仕方が無いのでまとめて置く事にしました。BeautifulSoupはHTMLから情報を取得するだけ無く、HTMLの編集もできますが、ここではスクレイピング用途のみに絞っています。

(続きを読む…)

XML::Simpleっぽいpythonモジュール書いた

2010年2月4日 木曜日

Yahooの形態素解析APIを使おうと思ったら、XML形式しか対応してなかったので、Perlで言うところのXML::Simpleなpythonモジュールを探したのですが見つかりませんでした。XML::SimpleはXMLとPerlのハッシュ(と配列の混合オブジェクト)を相互に変換するモジュールで、ちょっとしたXMLの処理をするには非常に便利なので残念です。普通にDOMを弄っても良かったのですが、Python クックブックにベースとなるコードを見つけた事もあり、勢いでXML::Simpleを(中途半端に)移植してみました。

(続きを読む…)

[perl] ハッシュのスライスと多次元ハッシュのエミュレーション

2010年1月28日 木曜日

XML::Simpleのコードを読んでいると以下の様な表現が頻繁に出てきました。問題は8行目なのですが、ハッシュをリストコンテキストで扱っているのですが、初めて見る表現で、調べるのにも少し手こずったのでメモしておきます。

#!/usr/bin/perl
 
use Perl6::Say;
use YAML;
 
my @keys = qw(key1 key2);
my @vals = qw(val1 val2);
@dic{@keys} = @vals;   # 問題の行
say Dump \%dic;
 
# 出力は以下のようになります
# ---
# key1: val1
# key2: val2

(続きを読む…)

SBM Popular Entryのパッチを書いた

2010年1月13日 水曜日

このブログでもメニューバーに「ブックマークが多いエントリー」を表示していますが、これはSBM Popular EntryというWordpressプラグインを利用させて頂いています。hatena, delicious, livedoor, yahooそれぞれのSBM数を集計してくれるので、特定のブックマークサービスに偏らずに一番ブックマークされている順で記事を表示できて便利です。ところが各ブックマークサービスのAPI呼出しの形式の変化等により、一部動作がバギーだったのでパッチを書きました。

(続きを読む…)

Pythonで動的にクラスをロードしたい件

2010年1月7日 木曜日

app-engine-patchを使っていて、settings.pyに記述されているAUTH_USER_MODELクラスを動的にロードしたかったんですが、簡単に方法が解らなかったのでメモしておきます。要はクラス名が文字列で与えられている場合に、そのクラスにアクセスしたいという話です。

(続きを読む…)