Python

2つの配列から重複を省いたり、重複を得たり

2つの配列から重複を省いたり、重複を得たり 割とよく使うのにすぐ忘れるからメモ。ruby RUBY_VERSION #=> "1.9.3" a = [1,2,3,4,5,6,7,8,9,10] b = [1,3,5,7,9,11] a - b #=> [2, 4, 6, 8, 10] a & b #=> [1, 3, 5, 7, 9] python import sys print(sys.vers…

0と1を次々返す方法

0と1を次々返す方法 Algorithm - 0と1を次々と返す簡単なお仕事 この記事を見て自分でもやってみる。flipflop.py #!/usr/bin/env python # -*- coding: utf-8 -*- def flipflop(p=False): def ret(): ret.p = not ret.p return ret.p ret.p = not p return r…

MongoDBのmap/reduceを試してみる。

以前(http://d.hatena.ne.jp/stog/20100531/1275317576)作成したコレクションをmap/reduceを使って"type"別に集計してみる。コレクションの中身はこんな感じ。 $ mongo mytest MongoDB shell version: 1.4.4 url: mytest connecting to: mytest type "help…

HTML取得&解析をするPythonスクリプト

ついでにPythonでもYahoo!Japanのトピックス一覧を取得するやつをやってみる。 使用ライブラリは標準添付のurllib2 と easy_installでインストールした lxmltest.py #!/usr/bin/env python # -*- coding:utf8 -*- import urllib2 import lxml.html # urlを指…

日時を使った検索がうまくいかない(回避案)

前回(http://d.hatena.ne.jp/stog/20100526/1274899622)の続き。 MongoDBで日時を使った検索をするとき、1970-01-01より前の日付がうまく扱えない件について、自分が使い方を間違っているのか、そういう仕様なのか未だに分かっていない。。なので、以下の…

PythonからMongoDBを使ってみる

とりあえず、こんな感じで適当なタブ区切りデータを用意した。 dummy.tsv(文字コード:UTF-8) name type sex birthday おがわ human M 1980/11/03 たかはし human F 1974/02/20 たなか human M 2003/01/15 さとう human F 1960/10/05 ポチ dog F 2005/06/0…

MongoDBのPython用ドライバをインストール

※setuptoolsのバージョン0.6c9以上が必要らしいので適宜アップデートする。 # easy_install -U setuptools pymongoをインストール # easy_install pymongo インストールされたパッケージの確認 $ grep 'pymongo' /usr/lib/python2.4/site-packages/easy-inst…

easy_installでインストールしたパッケージの一覧

pythonのeasy_installでこれまでにインストールしたパッケージを確認しようと思ったのだが、一覧表示させる方法が分からなかった。仕方なくパッケージがインストールされるディレクトリ(/usr/lib/python2.4/site-packages/)に移動したところ easy-install.…

RSS1.0を検索する際の名前空間の指定

ここ最近Pythonのlxmlモジュールを試していて、RSS1.0形式のデータをXPathで検索する場合は名前空間を指定しなければならないことを知った。 例えば、RSSから各記事のタイトル部分を取得したいとして RSS2.0の場合、「 /rss/channel/item/title 」でOKなのだ…

lxmlモジュールでXPathプリコンパイルの効果

前回の記事で使用したPythonのlxmlモジュールについて調べていたら、XMLデータの検索に用いるXPath式をプリコンパイルできるらしいことが分かったので、どのくらい速度が向上するのか試してみた。 テストデータは前回のものと同じ。 $ ls -hl | grep yahoo_l…

XPathの書き方でどのくらい速度に影響するのか

pythonのlxmlを使ってXML文書内を検索するとき、XPathの書き方でどのくらい速度に影響するのか、簡単に試してみた。 まず、検索対象とするテストデータとして、Yahooからrssをダウンロードした。 $ wget -q http://blogs.yahoo.co.jp/rss.xml && mv rss.xml …

SocketServerのエラー「socket.error: (98, 'Address already in use')」

pythonのSocketServerモジュールを使っていて、前回bindしたソケットは閉じているのに再実行時に以下のようにsocket.errorが発生した。 $ python -V Python 2.4.3 $ python test_srv.py server start server close $ python test_srv.py Traceback (most rec…

pytc-0.8をインストール

先日pytc-0.7について書いた件 http://d.hatena.ne.jp/stog/20090504#1241451199 を、 id:gunyara-python さんに連絡してみたところ、速攻で対応(pytc-0.8をリリース)してもらえました。というわけで 前回setup.pyにパッチを当ててインストールしたpytc-0.…

PyTCのインストールでハマる。

以下のように、tokyocabinetの ./configureで --prefixに/usr/local以外を指定してインストールすると、easy_installによる pytcのインストールが失敗するようです。 $ cat /etc/redhat-release CentOS release 5.2 (Final) $ python -V Python 2.4.3 (toky…

ソケットをファイルのように読み取る

Pythonでソケット通信するとき ソケットオブジェクト.recv(受信バイト数) とすると受信できるみたいなんだけど、行単位で処理しようとすると何かと不便を感じたので調べたらあった。 import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s…

インデント

普段、PerlやRubyでスクリプト書くときは2スペースでインデントしてるんだけど、 Python標準添付ライブラリをいくつか見てみたら4スペースでインデントしてたので、 エディタの設定いじってPythonファイル(*.py)のときはTabキーで4スペース挿入されるよう…