配列から非UTF8文字をフィルタリング(スキップ)する方法は?
@ uname01の投稿とOPでこのコメントに対処するには、エラーを無視します。
コード
>>> b'\x80abc'.decode("utf-8", errors="ignore")
'abc'
細部
docsから、同じerrors
パラメーターを使用した他の例を以下に示します。
>>> b'\x80abc'.decode("utf-8", "replace")
'\ufffdabc'
>>> b'\x80abc'.decode("utf-8", "backslashreplace")
'\\x80abc'
>>> b'\x80abc'.decode("utf-8", "strict")
Traceback (most recent call last):
...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0:
invalid start byte
エラー引数は、入力文字列がエンコードのルールに従って変換できない場合の応答を指定します。この引数の有効な値である'strict'
(昇給UnicodeDecodeError
の例外を)、 'replace'
(使用U+FFFD
、REPLACEMENT CHARACTER
)、または'ignore'
(単にUnicodeの結果のうち文字を残します)。
str(bytes_string, 'utf-8', 'ignore')
3番目のパラメーターを渡すことにより、エラーを無視できます。