from xml.etree.ElementTree import parse
# 読み込み
mapping = {}
tree = parse('books.xml')
for B in tree.findall('book'):
isbn = B.attrib['isbn']
for T in B.findall('title'):
mapping[isbn] = T.text
pprint.pprint(mapping)
# 書き込み。文字コードを指定し xml_declaration=True にすると、
# 先頭に宣言() が入る
tree.write('out.xml', encoding="utf-8", xml_declaration=True)
2012年10月26日金曜日
python - etree を使った xml 解析
SAX よりも直感的
2012年10月25日木曜日
Book - 『ぼくが愛したゴウスト』 by 打海文三
『3652』で紹介されていたのを見て手にしてみたけど、面白かった。
ストーリーも良かったけど、文体が読みやすくて気に入ったから
この作家の本は他にも読んでみたいと思う。
ストーリーも良かったけど、文体が読みやすくて気に入ったから
この作家の本は他にも読んでみたいと思う。
python - SAX を使った xml のパース
パースされている最中に呼ばれる関数を実装する。
自前で状態を保存しなければならないので、入れ子が多いなど複雑なファイルのパースには向きそうにない。
import xml.sax, xml.sax.handler, pprint
class BookHandler(xml.sax.handler.ContentHandler):
def __init__(self):
self.inTitle = False
self.mapping = {}
def startElement(self, name, attributes):
if name == 'book':
self.buffer = ""
self.isbn = attributes["isbn"]
elif name == "title":
self.inTitle = True
def characters(self, data):
if self.inTitle:
self.buffer += data
def endElement(self, name):
if name == "title":
self.inTitle = False
self.mapping[self.isbn] = self.buffer
parser = xml.sax.make_parser()
handler = BookHandler()
parser.setContentHandler(handler)
parser.parse('books.xml')
pprint.pprint(handler.mapping)
print handler.mapping
2012年10月21日日曜日
Book - 『3652』 by 伊坂幸太郎
伊坂幸太郎のエッセイ集。
面白かった。人の考え方を読むことは楽しい。
作家としてのプロ意識みたいな物もすごく感じられた。
特に以下のエッセイがお気に入り。
面白かった。人の考え方を読むことは楽しい。
作家としてのプロ意識みたいな物もすごく感じられた。
特に以下のエッセイがお気に入り。
- 「亡くなったけれど、ベンチにいる」人たちの声が聞こえる短編集
- 武田幸三という格闘家の存在
- 十年目に考えたこと。
2012年10月20日土曜日
python - sqlite3 : テーブル一覧の取得
sqlite_master から type="table" を select する
import sqlite3
conn = sqlite3.connect('sq.db')
cursor = conn.cursor()
cursor.execute('select * from sqlite_master WHERE type="table"')
for item in cursor.fetchall():
print item
python - sqlite3 を使う
connect して cursor を作成してコマンドを実行する。
import sqlite3
conn = sqlite3.connect('sq.db')
cursor = conn.cursor()
cursor.execute('drop table people')
create_table_command = 'create table people (name char(30), age int(4))'
cursor.execute(create_table_command)
cursor.execute('insert into people values (?, ?)', ('Aoki',50))
cursor.executemany('insert into people values (?, ?)', [('Ishikawa', 70), ('Ueno', 40)])
conn.commit()
cursor.execute('select * from people')
print cursor.fetchall()
cursor.execute('select * from people where age >= 50')
print cursor.fetchall()
cursor.execute('update people set age=? where name = ?', (51, 'Aoki'))
cursor.execute('select * from people where age >= 50')
print cursor.fetchall()
Blogger - SyntaxHighlighter の導入
参考
BloggerにおけるSyntaxHighlighterの使い方
SyntaxHighlighter 行番号折り返し問題
テンプレートに以下の内容を追加。
一番下の css は Chrome で行数表示がバグってしまう問題に対応するためのもの。
BloggerにおけるSyntaxHighlighterの使い方
SyntaxHighlighter 行番号折り返し問題
テンプレートに以下の内容を追加。
一番下の css は Chrome で行数表示がバグってしまう問題に対応するためのもの。
登録:
投稿 (Atom)