傀儡師の館.Python
2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
1月
2月
3月
4月
5月
6月
7月
8月
9月
10月
11月
12月
全1件 (1件中 1-1件目)
1
いつの間にか100万アクセスを突破していた。民主党政権が終わるか、100万アクセスを突破したら、また再開しようかなと思っていたので、また、頻繁に書こうかなということで、リハビリから始めることにした。とりあえず、どうでもいいことを書きながら、書く習慣を取り戻すってところからで。unicodecsv 0.9.4を見てみる。Python2's stdlib csv module is nice, but it doesn't support unicode. This module is a drop-in replacement which *does*.おい、おい、まだ Python2 なのかって、このところ、Python でプログラム書かなかったから、Python 2 でストップしたままなのであった。というのはさておき、本題の unicodecsv。python2 の csv モジュールは、UTF-8 を使う分には、問題ないのだけれど、Unicode だとエラーになる。#!/usr/bin/env python# -*- coding: utf-8 -*-import csvfrom cStringIO import StringIOf = StringIO()w = csv.writer(f)w.writerow(('日本語', 'どうでしょう'))f.seek(0)r = csv.reader(f)row = r.next()print row[0], row[1]w.writerow(('日本語', 'どうでしょう')) の行をw.writerow((u'日本語', u'どうでしょう')) だとエラーになる。まぁ、あたりまえの話だけれど。UTF-8 ではなく、ユニコードを直接扱いたいというのであれば、unicodecsv を使えばよい。pip install unicodecsv でインストールしておいて、#!/usr/bin/env python# -*- coding: utf-8 -*-import unicodecsvfrom cStringIO import StringIOf = StringIO()w = unicodecsv.writer(f, encoding='utf-8')w.writerow((u'日本語', u'どうでしょう'))f.seek(0)r = unicodecsv.reader(f, encoding='utf-8')row = r.next()print row[0], row[1]いや、標準の csv モジュールだって、Unicode の CSV データ (Unicode 文字列のリスト)を扱うための csv.reader をラップするジェネレータ(generator)をunicode_csv_reader() のように書いてやればちゃんと扱えるでしょって、いちいちそういうコードを入れなくてよいから楽にユニコードのcsvデータを扱えるよって話なのでした。
2013.01.29
コメント(0)