タグ別アーカイブ: Python

ElementTreeの使い方

google app engine for pythonでXMLを扱うときにElementTreeを使っていくつかはまった。(beautiful soupの方が簡単そうだけどGAPでは使えないっぽい)
基本的な使い方はネットですぐ見つかるので、わかりにくいことだけメモ。
取り敢えず動けばいいという感じでやってるので、用語の使い方などは適当。。

時間を取られたのは、
ネームスペース(名前空間)がある場合。
違う親の下に同じ名前のタグがある場合。

名前空間がある場合は比較的簡単。

name= ‘{‘ + ここにURI + ‘}’

で必要な物を取り出す場合は

xml = fromstring(xmlp)
title = xml.getiterator(namespace+’Title’)

でOK。
表示する場合はfor構文の中で

title[i].text.encode(‘utf-8’)

みたいにする。

次はやっかいで、違う親の中に同じタグがある場合。
例えば

necoの下にnameがあり、
dogの下にnameもあるとする。

これを

xml.findall(.//name)

としたら、猫と犬の名前がごちゃごちゃに入ってしまう。
個別に取り出すには
順番に指定して、

/neco/name
/dog/name
みたいにしてあげる。(一番上から全部書く)

実際には
xml.findall(.//neco/name)

さらに名前空間もある場合は

xml.findall(.//{url}neco/{url}name)

とすればOK。(urlの部分に名前空間のURIを入れる)
直接入れないで、変数に入れてからやったほうがシンプルなんだけど、なぜかエラーが出て上手くいかなかったので直接入れた。

以上で取り敢えずはすべて解決。

1

google app engine for python で小数点のある数字を整数に変換する

たとえば、123.00を123に変換する方法。小数点以下はかならず00がくるようになってる。

こんなの簡単にできそうだけど、手こずった。

まず、いきなりint()を使うとエラーが出た。int()を使うと小数がある場合は、無理やり整数にできると思ってたけど、たぶん元が文字列なので上手くいかないんだと想像。
次に、float()を使ってみるとエラーがでなかったので、その後でint()を使うと上手く行った。
これで小数の文字列→小数→整数と変換

pvalue=int(float(Price[i].text.encode(‘utf-8’)))

表示する場合は、

str(pvalue)

として、また文字列に戻してあげないとエラーが出た。

取り敢えずこれで行けたけど、プログラムはまったくの素人なので、たぶん他にもっと簡単な方法があるはず。

1

pythonのバージョンアップ時のメモ

pythonの2.4しか入ってないので、2.7を入れたところ、なぜか2.4が起動する場合と、2.7が起動する場合がありはまった。
結論

pythonのバージョンを確認して2.4のままの場合、その時のユーザーのままエイリアスを設定しpythonでpython2.7が動くようにしてあげる。

エイリアスの設定は
# vi ~/.bashrc
で行う。

# User specific aliases and functions
という表示があるところにいくつかエイリアスの設定がしてあるから一番下に

alias python=’/usr/local/bin/python2.7′
と付け加えて保存。

/usr/local/bin/python2.7
はpython2.7までのアドレス。

保存したら、
# source ~/.bashrc
で有効化。

これでpythonとコマンドを打つと2.7の方が起動する

バージョン確認は
# python -V
でOK。

1

UNIXコマンドのメモ

主にパイソン関連

~.tar.gzというファイルから必要な物をインストールする場合。

wget ‘URL’
tar zxvf ファイル名.tar.gz
cd ファイル名
python setup.py install

wgetでURL先よりファイルをダウンロードしてくれる。
tar zxvfで圧縮ファイルを解答(そのフォルダに解凍される)
cdで解凍されたフォルダに移動
pythonの場合は、大抵python setup.py installだけでインストールが完了。

たまにこれで上手くいかないものがある。

1

グラフとか

pythonでグラフを描いてみた。

データを入れたファイルからデータを読み取って、自動でグラフを作り画像データにして指定した名前で保存してくれる。cronで定期的に動かせば自動で更新されるグラフを作れる。これは面白い。

sample

 

見た目が野暮ったいけど、これは一番シンプルなグラフでいろいろ見た目もいじれるようなので今週中にひと通り遊んでみる。

1