2008-03-09
■[開発][python] UnicodeDecodeErrorが発生する文字をignoreオプションで無視する
Pythonで文字コードを変更する際に変換対象の文字列に変換不能な文字が
含まれているとUnicodeDecodeErrorが発生して困ることが多かった。
しかし、unicode関数やencode関数のignoreオプションを使うと、
それらの変換不能な文字列を無視して変換してくれる。
こんな便利なものがあったとは。
BeatifulSoupで不正な文字列を含むXMLを読み込むと、読み込んだ時に
文字コードをご認識してしまう問題が発生していたが、ignoreオプション付きで
文字コードを再変換したらうまく認識してくれた。
# file_dataは壊れたXMLデータ(UTF-8) soup = BeautifulSoup(file_data) print soup.originalEncoding # 文字コードが誤認識される soup = BeautifulSoup(unicode(file_data, "utf-8").encode("utf-8")) # UnicodeDecodeError発生 soup = BeautifulSoup(unicode(file_data, "utf-8", 'ignore').encode("utf-8")) print soup.originalEncoding # utf-8で正しく認識される
ただ、これが正しいやり方なのかが分からない。
そもそもignoreオプションは割と使いまくるものなのだろうか。
ignoreオプションについては「速効!Python」に載っていた。
もっとちゃんと読もうと思った。
- 作者: 上平哲
- 出版社/メーカー: 秀和システム
- 発売日: 2007/04
- メディア: 単行本
- 購入: 1人 クリック: 29回
- この商品を含むブログ (15件) を見る
トラックバック - http://d.hatena.ne.jp/piro_suke/20080309/1205053195
リンク元
- 188 http://www.google.co.jp/search?q=UnicodeDecodeError&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 124 http://www.google.co.jp/search?q=UnicodeDecodeError&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
- 105 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cts=1331101776216&ved=0CDcQFjAB&url=http://d.hatena.ne.jp/piro_suke/20080309/1205053195&ei=PABXT4b-LqLImAXMxLDBDw&usg=AFQjCNFKbl13U_l5olI4PBd9ksE0XcwQQA
- 95 http://www.google.co.jp/search?hl=ja&q=python+unicodedecodeerror&btnG=Google+検索&lr=
- 91 http://www.google.co.jp/url?sa=t&rct=j&q=unicodeDecodeError&source=web&cd=2&ved=0CCYQFjAB&url=http://d.hatena.ne.jp/piro_suke/20080309/1205053195&ei=4BKFTqu7I8jOmAWC6cUe&usg=AFQjCNFKbl13U_l5olI4PBd9ksE0XcwQQA
- 87 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&hs=eNB&q=ActionScript3.0 外部ファイル&btnG=検索&lr=lang_ja
- 75 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCkQFjAA&url=http://d.hatena.ne.jp/piro_suke/20080309/1205053195&ei=AAwoT7jOFOLnmAWG4KnMAw&usg=AFQjCNFKbl13U_l5olI4PBd9ksE0XcwQQA
- 47 http://www.google.co.jp/search?hl=ja&source=hp&q=UnicodeDecodeError&btnG=Google+検索&lr=lang_ja&aq=f&oq=
- 47 http://www.google.co.jp/search?q=python+unicodedecodeerror&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 45 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GZAZ_jaJP254JP254&q=javascript+正規表現 後方参照