Makoでshift_jisの文字列をバインディング
shift_jisで書かれたcsvを読んでバインディングしていくときは、こんな感じ。
def create_by_mako(csv_file, tmpl_file): import mako.template tmpl = mako.template.Template(filename=tmpl_file, output_encoding='shift_jis', default_filters=['decode.shift_jis']) import csv reader = csv.reader(open(csv_file, "rb")) for row in reader: f = open(row[0] + '.html', 'w') f.write(tmpl.render(**{'title':row[1], 'status':row[2], 'detail':row[3], 'transit': row[4]})) f.close()
renderで値を渡すときに個々のrow[1]とかしてるところを
unicode(row[1], 'shift_jis')
tmpl = mako.template.Template(filename=tmpl_file, output_encoding='shift_jis', default_filters=['decode.shift_jis'])
として、デフォルトを設定したほうがラク。
MakoかわいいよMako
*1:けど、うまくいかんかった。理解できてないなー