2009年11月20日金曜日

Python 今日覚えたこと

utf-8な文字列を内部で扱う形式にデコードする際、


unicode_str = utf8_data.decode('utf-8')

とするとutf8_dataにデコードできないバイト列があった場合、UnicodeDecodeErrorの例外をだす。


UnicodeDecodeError: 'utf8' codec can't decode byte 0xb4 in position 1: unexpected code byte


デコードできない文字列を削除してしまっていいのなら'ignore'を引数で渡してやればよい。


unicode_str = utf8_data.decode('utf-8', 'ignore')


さらにdecodeよりunicodeの方が高速らしい。


unicode_str = unicode(utf8_data, "utf-8", 'ignore')


エンコード、デコードの概念はPerlと同じなので理解しやすかった。

参考
http://snippets.hachinos.net/lang/python/user/piro_suke/3/
http://d.hatena.ne.jp/methane/20090816/1250433407

0 件のコメント:

コメントを投稿