ケースとしてはレアな気がしますが、MySQLのSELECT 〜 INTO OUTFILEで出力したCSVに対して、処理をしたい時があります。僕の場合はpythonでやるわけですが、MySQLが出力するCSVの形式がpythonデフォルトの物と違うようでハマったのでメモしておきます。
‘programming’ カテゴリーのアーカイブ
MySQLが出力するCSVファイルをPythonで読みたい件
2010年3月8日 月曜日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クラスを動的にロードしたかったんですが、簡単に方法が解らなかったのでメモしておきます。要はクラス名が文字列で与えられている場合に、そのクラスにアクセスしたいという話です。