python

現在の timestamp と microsecond をつなげた文字列が欲しい

これで何かをするわけではないが、必要になったので書いた。 import datetime import time def __get_timestr_by_now(): now = datetime.datetime.now() micro_str = str(now.microsecond).zfill(6) time_str = str(int(time.mktime(now.utctimetuple()))) r…

文字列比較

気になったので比較して結果を確認した。 # -*- encode: utf-8 -*- if u'0' < u'1': print '0 < 1' if u'1' < u'2': print '1 < 2' if u'2' < u'3': print '2 < 3' if u'3' < u'4': print '3 < 4' if u'4' < u'5': print '4 < 5' if u'5' < u'6': print '5 <…

同じ値を複数の変数に代入する

もしかして邪道なのかな。 st1 = 'a' st2 = 'b' st3 = st4 = st1 print st1 # => 'a' print id(st1) # => 26430944 print st2 # => 'b' print id(st2) # => 26431008 print st3 # => 'a' print id(st3) # => 26430944 print st4 # => 'a' print id(st4) # =>…

指定したdatetime値でのfilter

ユーザー一覧の表示などする時には fetch() を使っていた。しかしこれでは1000件の壁にぶち当たる。そこで datetime 値での filter を使用した。 こんなモデルがあったとする from google.appengine.ext import db class Member(db.Model): insert_datetime …

int と bool であはん 〜isinstance()の罠〜

これはびっくりした。なのでメモ。 i = 123 isinstance(i, int) # => True a = True isinstance(a, int) # => True b = False isinstance(b, int) # => True c = 1 isinstance(c, int) # => True d = 0 isinstance(d, int) # => True えぇー! i = 123 isins…

文字列の比較で疑問(4)

西尾さんに質問したら丁寧に解説してくれた。Pythonで2つの文字列がa == bだけどもnot(a is b)であるようなケース質問するに当たって確認された事は、対話的環境を使用したかどうか。答えはyes。というわけで試してみた。 対話型インタプリタとの会話 d1 = '…

文字列の比較で疑問(3)

疑問点が変わったけどこのタイトルのままで。 d1 = 'aaa' d2 = 'aaa' id(d1) # => 27605792 id(d2) # => 27605792 ふむ。で、ここから疑問。 d1 = 'a a' d2 = 'a a' id(d1) # => 27605856 id(d2) # => 27606080 えっなんで?

文字列の比較で疑問(2)

d1 = 'string' d2 = d1 'yes' if d1 == d2 else 'no' # => 'yes' 'yes' if d1 is d2 else 'no' # => 'yes' おっ?何かが見えてきたような気がする。[追記]気のせいだった。うーむ。

文字列の比較で疑問(1)

d1 = 'string' d2 = 'string' 'yes' if d1 == d2 else 'no' # => 'yes' 'yes' if d1 is d2 else 'no' # => 'yes' ふむふむ d1 = 'str int' d2 = 'str int' 'yes' if d1 == d2 else 'no' # => 'yes' 'yes' if d1 is d2 else 'no' # => 'no' えっなんで?自分…

文字列置換

知らなかった事を恥じたので書く。 a = 'strA' b = 'strB' c = 'strC' text = '1st : %s, 2nd : %s, 3rd : %s' print text % (a, b, c) #=> 1st : strA, 2nd : strB, 3rd : strC tpl = (a, b, c) text = '1st : %s' print text % tpl #=> 1st : strA, 2nd : …

データの有効期限をdatetime使ってチェックする

よくある、サービスに登録すると登録確認用URLが記載されたメールが送信されて、そのURLへアクセスすると登録完了となるようなもの。で、有効期限を定める部分と有効期間内かどうかをチェックする部分。 from google.appengine.ext import db import datetim…

NHK教育の数学番組でやってたカードマジックの答えだけ返すコード書いた

秋山仁さんが好きだ(`・ω・´)それはおいておいて。答えだけ求めるコード書いた。 def nhalf(dlist, st=0): rlist = dlist[st::2] if len(rlist) == 1 : print rlist[0] else : if dlist[-1] == rlist[-1] : last = 1 else : last = 0 nhalf(rlist, last) def…

画像を指定のサイズに切り取る(よきにはからう感じで)

image_key : 画像を指定w : 欲しい横幅h : 欲しい縦幅models.py from django.utils.translation import ugettext_lazy as _ from google.appengine.ext import db class Photo(db.Model): image_binary = db.BlobProperty() views.py from django.http impor…

GAEのクエリクラスでのfetch()

いわゆる limit, offset の指定でちょっと詰まった→とりあえず解決した、のでメモ。 Query クラス - Google App Engine - Google Code テストデータが100件入っているとする。うち、50件は「sale_price = 100」にマッチする、とする。 class Song(db.Model):…

クラスの上書き

class Hoge: def foo(self): print 'foo' return None hoge1 = Hoge() hoge1.foo() # foo class Hoge: def foo(self): print 'foobaa' return None hoge2 = Hoge() hoge2.foo() # foobaa hoge1.foo() # foo へぇー面白い(・∀・)

メソッドのアクセス制御

メソッドに対して、プライベートとパブリックの概念しか無いらしい。何も指定しなければパブリック、メソッド名の前にアンダースコア2連続をつけるとプライベート、らしい。 class SkskAction: def func(self): print 'SkskAction - func()' return None def…

デコレーション

修飾子「@」を使用するデコレーション記述。テストした環境は Python2.5.2 っていうか app-engine-patch(google app engine)。 urls.py urlpatterns = auth_patterns + patterns('', (r'^wkwk/showChar', 'wkwk.views.showChar'), (r'^wkwk/showPost', 'wkwk…

リスト内の要素を探すときにちょっと嬉しいと思ったこと

リスト内にある辞書型の要素を探してて、地味に嬉しかった。 # こんなメソッドがあるとする def hasData(data_list, search_value): if search_value in list_data: return True else : return False # こんなリストがあったとして data_list = [ { 'name' :…

やっちまった・・・

とあるファイル1「aa/views.py」 import bb.views as bbv def mainA(request): # 処理ごにょごにょ bbv.mainB(request) return True とあるファイル2「bb/views.py」 import aa.views as aav def mainB(request): # 処理ごにょごにょ aav.mainA(request) ret…

set()って…

set型というものがあったことに気づかず set() というメソッドを作成してつまりオーバーライド(?)してしまいリスト内で重複してる要素を省きたくて result = list(set(['a', 'b', 'c', 'a', 'b')) って書いて result 内には並び順はどうあれ ['a', 'b', 'c']…

文字列の正規化

タグクラウドなんか作る時に必要になったので以下を作成&テスト。メソッド regtest() に request が渡されてるのは Django でやってるから。 import unicodedata def regtest(request): data = [ u'あいうえおがぎぐげご', u'アイウエオガギグゲゴ', u'アイウエ…

eval使いたい

evalで代入はできないらしい…式を実行するだけみたい。evalってそういうものなのかー a = 100 b = 200 text1 = 'a + b' text2 = 'result = a + b' # result には 300 の値が入る result = eval(text1) # これはエラーになった eval(text2)

三項演算子

以下のif文を三項演算子使って1行で書きたい(実行環境:python 2.5.2) a = 100 b = 200 # if文 if a > 0 : result = a else : result = b # 三項演算子使用 result = a if a > 0 else b もちろん結果はどちらも同じ print result # 100 これは地味に嬉しい

拡張子から静的ファイル置き場のファイルを読むか判断させたい

app.yaml # 静的ファイル設定 - url: /(.*\.(html|js|css|jpg|gif|png)) static_files: static/\1 upload: static/(.*\.(html|js|css|jpg|gif|png)) うごいたー(・∀・)

配列の便利スライス

data = [ 'a', 1, 'b', 2, 'c', 3, 'd', 4 ] # 2つとばしで取得 get_str = data[::2] get_num = data[1::2] 上記 get_str と get_num を出力 # get_str ['a', 'b', 'c', 'd' ] # get_num [1, 2, 3, 4]

辞書型の要素内の辞書型の要素でソート

メモしておく data = { 'a' : { 'name' : 'anna', 'age' : 17 }, 'b' : { 'name' : 'beck', 'age' : 15 }, 'c' : { 'name' : 'cherry', 'age' : 20 }, 'd' : { 'name' : 'detteiu', 'age' : 31 } } # (1) age の昇順ソートしたい result = sorted(data.items…

セッションに入れる、セッションから出す

def index(request): # 入れる request.session['user_key'] = 'abcde' # 出す print request.session['user_key'] # 結果 # abcde

URLから実行するモジュールを判断して実行させたい

やりたかったことは2点。 django & python で動的にモジュールを呼び出す python で可変引数を受け付ける関数を実現 というわけで「http://localhost:8000/api/image/set/」で「img/views.py の set()」が、「http://localhost:8000/api/image/own/list/」で…

先頭だけ大文字にしたい

text = 'abcde' result = (text[0]).upper() + text[1:] # print result # 結果 # Abcde (追記)こんなのあったのか 3.6.1 文字列メソッド しかし指定した位置の文字だけ大文字または小文字にして返すなんてメソッドは無いのか… そういうのが必要な時点で何か…

GAEの画像処理リソース使って画像のサムネイル生成&データストアへ保存

ここを参考にした。 Images Python API - Google App Engine - Google Code 画像をアップロード 元画像と生成したサムネイル画像を保存 保存した画像を表示する これらを実現できた。やったね! アプリケーション作成 > python manage.py startapp img manag…