Stranger in Wonderland

pyfesにて、もくもく作業してた内容メモのみ。

@geeklatte_bot をつくった

JSON 読みこんで、ランダムで1つとってきて tweet する子です。 dev_appserver.py がなぜかどっかいってたけど Google App Engine SDK アップデートしたら戻ってきた。よくわからない Warning が出てるけど…。

以下、自分に忘れて欲しくないポイントだけ。

url 開く

import urllib2
data = urllib2.urlopen('http://geeklatte.com/geeklatte_all.json')

20.6. urllib2 — URL を開くための拡張可能なライブラリ

urllib2.urlopen(url[, data][, timeout])
URL url を開きます。 url は文字列でも Request オブジェクトでもかまいません。
この関数は以下の 2 つのメソッドを持つファイル類似のオブジェクトを返します: * geturl() * info()

ファイル類似のオブジェクト(file-like object)というのは、実ファイルじゃないけど.read()とかできるファイルっぽい何か、らしい。

JSON 読んで dict つくる

import json
dictFromJson = json.load(data)

Python 2.7ja1 documentation » Python 標準ライブラリ » 18. インターネット上のデータの操作 » 18.2. json — JSON エンコーダおよびデコーダ

json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
直列化された fp (.read() をサポートするファイル的オブジェクトで JSON 文書を収めたもの) の内容を Python オブジェクトに戻します。

Python オブジェクトって具体的になに!この場合は元が JSON だから dict と思ってていいのかな。

dict の中身にアクセス

photoset = dictFromJson['photoset']

思わず dictFromJson.photoset って dot notation で書こうとしてた。ちがった…。

Python 2.7ja1 documentation » Python チュートリアル Python チュートリアル » 5.5. 辞書

@moonphase_botアップデートした

28日め = 0日めに「計算できなかったみたい」って tweet してたので直したのと、1周して飽きたので、月齢を □□□□ 表示にしてみた。テストとかしてないのでまた28日かけて動作確認する。
さらに、Tokyo の日の出と日没時間も tweet するようにした。

datetimeのフォーマット

sun['sunrise'] とか sun['sunset'] で返ってくる値が 2012-11-24 06:25:52+09:00 なんだけど、使いたいのは 06:25:52 のとこだけなんだよね。うーん。
で、re.sub しかけてたんだけど、そうじゃなくて datetime の方で好きなフォーマットにできるのだった。

str(sun['sunset'].strftime("%H時%M分%S秒"))

とか。

Python 2.7ja1 documentation » Python 標準ライブラリ » 8. データ型 » 8.1. datetime — 基本的な日付型および時間型




Author

Yuko Honda Morita (yukop) : yukop.com
飯能→東京→シリコンバレー。夫と猫2匹と暮らしてます。作ったり学んだり踊ったりするのが好き。
Born in Japan, living in California with my husband and two cats. "A bit of a geek and a bit of a geek fan and a bit of an artist." ->

Latest Posts

Japanese
English

Chronological Archive

Tags