業務システムなど作っていると、CSV作成などで'00000013245'などの
固定長文字列を生成する場面が良くあります。
Pythonなら簡単です。
8文字の固定文字列を作る場合
>>aa = 3452
>>xx = ("00000000" + str(aa))[-8:]
>>print xx
00003452
>>
[-8:] というのは
「後ろから8文字目から(後ろから8文字目は含む)最後まで」
という意味です。
逆に
>>xx = ("00000000" + str(aa))[8:]
>>print xx
3452
>>
これは「前から8文字目から(8文字目は含まない)最後まで」
という意味です。
前からと後ろからで若干混乱気味になりますね(私はなるw)。
これは単にリストをスライスしているだけ(文字列もリストの一種)
ですので、普通のリストでも同じように出来ます。
--追記--
匿名さんからのコメントで以下の方法もあるよと指摘が。
print 3452.zfill(8)
print "%08d" % (3452)
print "%(num)08d" % {'num':3452}
そのものズバリの方法があるジャマイカ orz...
まったくもって勉強不足でございました。精進いたします!
ひろ(species5618jp)の技術的な覚え書き
プログラム言語・ソフトウェア・Webサービス・ガジェットetc...
2010年4月21日水曜日
2010年4月15日木曜日
Pythonでリストをループ処理するときに添字も取得する方法
例えば、
datas = ["石田","北島","佐藤","田中","中野","本田"]
i = 0
for data in datas:
i += 1
print u"出席番号:" + str(i) + u" 名前:" + data
これは結構ダサいよね。
これはこんなふうに書ける。
datas = ["石田","北島","佐藤","田中","中野","本田"]
for i,data in enumerate(datas):
print u"出席番号:" + str(i+1) + u" 名前:" + data
美しくなった(^^)/
datas = ["石田","北島","佐藤","田中","中野","本田"]
i = 0
for data in datas:
i += 1
print u"出席番号:" + str(i) + u" 名前:" + data
これは結構ダサいよね。
これはこんなふうに書ける。
datas = ["石田","北島","佐藤","田中","中野","本田"]
for i,data in enumerate(datas):
print u"出席番号:" + str(i+1) + u" 名前:" + data
美しくなった(^^)/
2010年4月9日金曜日
Blogをはてな->Bloggerに移行。
3年くらいずっとはてダを使っていたのですが、
ここBloggerに移しました。
最近のはてなの重さはちょっと異常。
あれではどんどんユーザー逃げていくんじゃないだろうか。
ある程度減ったら重いのも解消されるかもしれないけど、
それじゃあ本末転倒だしなぁ。
はてなは決して嫌いじゃないので改善されないか待ってたんですけど、カメラを買い替えてWebアルバムをPicasaに替えたこともあってこちらに移してしまった。。。。
こちらは表示も軽快だし、管理画面も割と使いやすいしこれまた軽い。
Webサービスはレスポンスが第一だよねぇ。
2009年12月31日木曜日
2009年8月14日金曜日
OSX10.5のPythonでMySQLを使えるようにする
仕事でDjangoを使うことになり、自宅のMacBookにも環境を作ろうとしてMySQLdbのインストールで大変ハマったのでメモしておきます。
なお、PythonはOSプリインストールのもの(2.5.1)、MySQLはMAMPでインストールされるものを使うのですが、実はこの「MAMPでインストールされるMySQL」を使っているために色々面倒だったのでした > <
まずはMySQLdbをダウンロード(私が使ったのはMySQL-python-1.2.3c1)してきて普通に
これはMAMPでインストールされるMySQLにはコンパイルに必要なヘッダファイルがまったく付属していないからです。
そこでMySQLのダウンロードサイトからMAMP付属のMySQLと同じバージョンのMySQL(私の場合は5.0.41)をダウンロードし、同梱されているヘッダファイルを/Applications/MAMP/Library/include/mysqlにコピーします。
さらにMAMPですから普通とはMySQLがインストールされている位置がまったく違うので、シンボリックリンクを作ってごまかします。
さらにMySQLdbのsite.cfgの下記の箇所も修正します。
仕方がないので若干強引かとは思ったんですが、先にダウンロードしたMySQLに同梱されているライブラリ群を/Applications/MAMP/Library/lib/mysqlに全てコピーしちゃいました。
そして再度
なお、PythonはOSプリインストールのもの(2.5.1)、MySQLはMAMPでインストールされるものを使うのですが、実はこの「MAMPでインストールされるMySQL」を使っているために色々面倒だったのでした > <
まずはMySQLdbをダウンロード(私が使ったのはMySQL-python-1.2.3c1)してきて普通に
山のようにエラーが出ます orz...
$ sudo python setup.py build
これはMAMPでインストールされるMySQLにはコンパイルに必要なヘッダファイルがまったく付属していないからです。
そこでMySQLのダウンロードサイトからMAMP付属のMySQLと同じバージョンのMySQL(私の場合は5.0.41)をダウンロードし、同梱されているヘッダファイルを/Applications/MAMP/Library/include/mysqlにコピーします。
さらにMAMPですから普通とはMySQLがインストールされている位置がまったく違うので、シンボリックリンクを作ってごまかします。
sudo mkdir /usr/local/mysql
sudo mkdir /usr/local/mysql/lib
sudo ln -s /Applications/MAMP/Library/lib/mysql /usr/local/mysql/lib/mysql
さらにMySQLdbのsite.cfgの下記の箇所も修正します。
そして再度
#mysql_config = /usr/local/bin/mysql_config
mysql_config = /Applications/MAMP/Library/bin/mysql_config
まだエラー orz... こんどはライブラリがないだと。。。
$ sudo python setup.py build
仕方がないので若干強引かとは思ったんですが、先にダウンロードしたMySQLに同梱されているライブラリ群を/Applications/MAMP/Library/lib/mysqlに全てコピーしちゃいました。
そして再度
ようやくインストール出来ました。めでたしめでたし^^
$ sudo python setup.py build
$ sudo python setup.py install
おおお、エラー出ないぞ!w
$ python
>>> import MySQLdb
>>>
2009年7月6日月曜日
2009年5月30日土曜日
余計なお世話のSuperFetch ( Windows Vista )
会社のPCのHDDが1日中回りっぱなしなことに最近気付きました。「む?ウィルスか?」と思いタスクマネージャーで負荷を見たところ、そんなに過負荷ではないんですが、HDDは回り続けてる。
リソースモニタのHDDのところを見ると、svchost.exeがVirtualBoxの仮想マシンイメージをずっとReadしています。「あー検索インデックス作成をやってるんだな。仮想マシンのイメージをインデックスしてどうすんじゃいww」と思い、WindowsSearchを止めてみました。でも相変わらずHDDは回り続けてます、むー。
で、ググッてみたらありましたありました。
SuperFetchは失敗作
http://agorian.com/web/vista/000099.html
【失敗機能】Vistaの~SuperFetchは絶対に切れ!なんと空きメモリを利用して、起動するアプリケーションをあらかじめメモリに読み込んでおくサービスなんですと、頼みもしてないのに。。。スパイウェアかウィルスかと思ってアセったではないか!
http://pc11.2ch.net/test/read.cgi/win/1178624264/l50
こんなのを勝手に動かされたら困るよなぁ、ディスクの寿命が縮まるじゃないか。
というか、仮想マシンのイメージを読み込んでどうするつもりだVista、アプリケーションじゃないってw
登録:
投稿 (Atom)
Template Design: © 2007 Envy Inc.