「PythonのUnicodeDecodeErrorの対処方法」の版間の差分
提供: Python入門
(ページの作成:「PythonのHTMLParserを使用して、HTMLをパースしていたときに UnicodeDecodeError(ユニコード デコード エラー) のエラーに遭遇しました。...」) |
(→概要) |
||
行28: | 行28: | ||
File "/usr/local/lib/python2.7/re.py", line 151, in sub | File "/usr/local/lib/python2.7/re.py", line 151, in sub | ||
return _compile(pattern, flags).sub(repl, string, count) | return _compile(pattern, flags).sub(repl, string, count) | ||
− | UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 6: ordinal not in range(128) | + | UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 6: |
+ | ordinal not in range(128) | ||
Exit 1 | Exit 1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
== 対処法 == | == 対処法 == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> |
2015年2月8日 (日) 11:58時点における版
PythonのHTMLParserを使用して、HTMLをパースしていたときに UnicodeDecodeError(ユニコード デコード エラー) のエラーに遭遇しました。UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 6: ordinal not in range(128)
読み方
- UnicodeDecodeError
- ゆにこーど でこーど えらー
概要
以下のエラーメッセージが出現しました。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 6: ordinal not in range(128)
ASCII(アスキー)をデコードしようと思ったけど、できなかった、ということのようです。
プログラムを実行するとこのようになります。
$ python parse.py Traceback (most recent call last): File "parse.py", line 210, in <module> parser.feed(html) File "/usr/local/lib/python2.7/HTMLParser.py", line 108, in feed self.goahead(0) File "/usr/local/lib/python2.7/HTMLParser.py", line 148, in goahead k = self.parse_starttag(i) File "/usr/local/lib/python2.7/HTMLParser.py", line 252, in parse_starttag attrvalue = self.unescape(attrvalue) File "/usr/local/lib/python2.7/HTMLParser.py", line 393, in unescape return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s) File "/usr/local/lib/python2.7/re.py", line 151, in sub return _compile(pattern, flags).sub(repl, string, count) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 6: ordinal not in range(128) Exit 1
対処法
foo ( str );
なところを
foo ( str.decode('utf-8') );
とするだけで、解決しました。