Pythonで日付の計算はdateutilを使う

  • April 05, 2010 22:00
  • Posted by uemura

Pythonで日付の計算をするのにはdatetimeやcalendarなどの標準モジュールがあるのですが、easy_install などでインストールできる dateutilモジュールが便利です。

が、使い方を忘れがちなので、よく使うものをまとめてみました。

非常に便利なのでPythonを使っている人はかならずインストールしておきましょう。

#! /usr/bin/env python
#! vim: fileencoding=utf8

import datetime

def test_relativedelta():
    """

  

集合知プログラミング 2章1

  • January 18, 2010 23:06
  • Posted by uemura

買って積み本になっていた集合知プログラミングを少しやってみたのでメモです。

集合知プログラミング
Toby Segaran
オライリージャパン
売り上げランキング: 15874

サンプルコードはPythonで書かれていて、

http://examples.oreilly.com/9780596529321/PCI_Code.zip

からダウンロードできます。

今回やったのは以下の部分

  

るこさん用twitterクライアント「Rukotter」

  • October 06, 2009 20:59
  • Posted by uemura

そろそろ7ヶ月目になる我が家の「るこさん」ですが、どういう訳か非常にパソコンが好きです。

たまに触らせてあげてたのですが、vimをやらせてもあまり面白くないのでTwitterをやらせることにしました。

とは言っても0歳児に文字を入力して「Enterキー」を押すと送信されるということを伝えるのは無理なので、るこさん用のTwitterクライアント「Rukotter」をwxPythonで作りました。

http://bitbucket.org/ueblog/wxpythonapps/src/tip/rukotter/rukotter.py

http://static.flickr.com/2441/3987177120_0ae614549b.jpg

python,wxpython,python-twitter,simplejsonがあれば動くと思います。

特徴は

  

1以上100未満の『2個の素数の積』である整数

  • May 12, 2009 02:53
  • Posted by uemura

Python Hack-a-thon#1 の参加フォームに

問題: 1以上100未満の『2個の素数の積』である整数を列挙しなさい (回答は任意です)

という問題があったのでやってみました。

Generatorだけを使っているので無駄にリストを作ってメモリを使いすぎないようにしています。limitを100000くらいにしても割と普通に動きます。

ただ、2回目のLoopで素数の計算を何度もやっているのが無駄、、、GeneratorはDeepcopyや、一つ前に戻すのが難しい、、、itertools.teeでも上手くかけませんでした orz...... 1以上100未満の『2個の素数の積』である整数

import math
from itertools import ifilter, count

  

RE:RE:*hogeとか**mapとか

  • March 11, 2009 08:03
  • Posted by uemura

RE:pythonの引数にある*hogeとか**mapとか - Djangoへの片思い日記 より

http://d.hatena.ne.jp/jYoshiori/20090310/1236685438

僕は

>>> import datetime
>>> import time
>>> datetime.datetime(*time.strptime(value, '%Y-%m-%d')[:3])
datetime.datetime(2008, 3, 10, 0, 0)

  

NKF_pythonで半角文字の変換

  • March 06, 2009 20:00
  • Posted by uemura

前回の続き、

ueBLOG | Pythonで機種依存文字を含む文字列を半角から全角へ

NFK_pythonにはguessという文字コードを判別してくれる関数があるのですが、

>>> b = "ナイトウあいう".decode("utf8").encode("sjis") #僕のipythonの内部コードがutf8のためutf8でdecode
>>> b
'ナイトウ\x82\xa0\x82\xa2\x82\xa4'
>>> print b

  

Pythonで機種依存文字を含む文字列を半角から全角へ

  • March 03, 2009 23:40
  • Posted by uemura

<追記 3/5>

hideakiさんのコメントとnullpobugさんの指摘どおり

Windowsでの文字コード変換 - 偏った言語信者の垂れ流し

cp932でオッケーでした。

>>> s = "コンゲツ えおⅡ"
>>> unicode(s, "cp932")
u'\uff7a\uff9d\uff79\uff9e\uff82 \u3048\u304a\u2161'

  

PythonをつかってMySQLの巨大な結果を返すselect文を処理する

  • February 25, 2009 08:22
  • Posted by uemura

PythonからMySQLを扱うには一般的にMySQLdbモジュールを使います。

(または、MySQLdbを内部で使っているSQLAlchemyなどのO/Rマッパー)

MySQLdbを普通に使うと以下のようになります。

>>> import MySQLdb
>>> con = MySQLdb.connect(db="intra", host="yourhost", user="your_username", passwd="your_passwd")
>>> cur = con.cursor(MySQLdb.cursors.DictCursor)
>>> cur.execute("select * from hoge_tbl limit 90000")
90000L
>>> cur.fetchone()
{'columns1': '4', 'maintdate': datetime.date(2002, 8, 13), 'hoge': 'hoge' }

  

Pythonのlogging

  • February 21, 2009 22:44
  • Posted by uemura

これまでPythonのモジュールでloggingモジュールをちゃんと使って無かったので練習。

(ちょっと問題ですね)

14.5 logging -- Python 用ロギング機能

  • 特定のファイルにdebug以上のログを書き込み。プロジェクトごとにログファイルを作り、開始日時と終了日時も記録。
  • 標準出力にも表示
  • error以上はメールにエラーメッセージを送付

をするために試しに以下のコードを書いてみました。

  

Pythonでctypesを使ってUNLHA32.dllを扱う2

  • February 08, 2009 08:39
  • Posted by uemura

ちょっと前ですが、

ueBLOG | Pythonでctypesを使ってUNLHA32.dllを扱う

の続き。

実際の圧縮や解凍はどうするかという話ですが、

# 圧縮
>>> from ctypes import windll
>>> com = r"a c:\temp\archive.lzh C:\temp\*.csv"