Google App EngineでPythonを触りながら、行き当たりばったりで学んだことをメモ。
pythonはnotを使用する
TrueならFalse、FalseならTrueに反転させる
>>> a = True >>> a = !a SyntaxError: invalid syntax >>> a = not a >>> a False
typeで型を取得
>>> type({}) <type 'dict'>
typesを使用して型を比較
>>> import types >>> type({}) is types.DictType True
こんな書き方じゃダメなのか?
>>> foo = {} >>> type(foo) is type({}) True
import typesするの面倒とか言っちゃダメですか?。。。ρ(-ω- ) イジイジ
指定したkeyがないとKeyErrorが返ってしまう
>>> feed = {} >>> feed['entry'] Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> feed['entry'] KeyError: 'entry'
上のようにKeyErrorが返るのでそれを回避するには
>>> feed.get('entry')または
>>> 'entry' in feed False
どうしてもそう書きたいならNoneを入れておく。
feed = {'entry':None}
ついでにsetdefaultも理解しておく
>>> v = {} >>> v.setdefault('foo','bar') 'bar' >>> v['foo'] = 'hoge' >>> v['foo'] 'hoge' >>> v.setdefault('foo','fuga') 'hoge'
dictのupdateは便利、でもどちらがイイのか?
entry = {'title':'entry title'} #1. entry.update({ 'content':'entry content', 'url':'entry URL' }) #2. entry['content'] = 'entry content', entry['url'] = 'entry URL'
2.の方もfor文で回せばコードもスッキリするし、速度的にはどうだろう?とか思いながら調べる気にはなれない。(-_-)zzz
updateの処理速度次第ってことで。
jsonを扱うにはsimplejsonを使えばイイようだ
dumpsとloadsの使い方を知っとけばとりあえず何とかなる(はず)(-_-;)
from django.utils import simplejson #JSON形式の文字列 → Python dectデータ dect = simplejson.loads(str) #Python dectデータ → JSON形式の文字列 str = simplejson.dumps(dect) #loadはファイルからJSONデータをロードする。 f = open("foo.json") foo = simplejson.load(f)
文字列の入/出力
文字コードの問題でつまずくのは云わば"皆が通る道"のようで、ググるとザクザク出てくる。
こういうのを見ると「既知で何が悪い!!」見たいな開き直りも結構まかり通るんじゃない?という手応えを感じたりして。ー ̄) ニヤッ
文字コードの扱いは多分こんな流れがイイんじゃない?
ファイルの文字コードを
UTF-8
に指定#!-*- coding: utf-8 -*-文字コードを指定する理由はファイル内で日本語を書くとローカルでは問題ないが、デプロイするとエラーになるため。
UTF-8
にエンコードして取得value = self.request.get('value').encode('UTF-8')↓
ごにょごにょする。
↓
unicodeに変換して出力
self.response.out.write(cgi.escape(unicode(value, 'UTF-8')))みたいな流れがよさげ。
s.decode('utf8') よりも unicode(s, 'utf-8') の方が速い - methaneの日記
見たいなことも参考にしたりして。
1 Comments:
dictのupdateはキーワード引数も使えます
>>> a = {}
>>> a.update(x=1, y=2)
>>> a
{'y': 2, 'x': 1}
isinstance関数で、クラスチェックができます。
>>> isinstance({}, dict)
True
コメントを投稿