Webスクレイピングで取ってきたテキストデータなど、大量の有象無象の文章をPythonで読み取ろうとする際のデコードエラー'XXX' codec can't decode byte XXX in position XXX: illegal multibyte sequence.
、ありますよね。
エラーが起きる文字を無視するだけなら、ファイルを開くとき
open("ファイル名", errors="ignore")
とするだけで事足ります。
しかし、これでは
タイ文字「ผิดพลาด」は「エラー」という意味です
が
タイ文字「」は「エラー」という意味です
になってしまいます。(タイ文字はデコードエラー文字のメタファーとして扱ってるだけです)
テキストマイニングのような大量の文章を扱っているとき、わざわざこのような壊れた文章を処理に取り入れなくていいってなりますよね?(もちろん、そもそもスクレイピングで取ったような文章なんて壊れてても誤差みたいなもんでしょうが、、)
このようなデコードエラー文字が存在する行ごと読み取りをスキップしたいときのコードはこちらです。
f = open("開くファイル", "r")
texts = []
line = True
while line:
try:
#1行読み取り
line = f.readline()
#get rid of empty
if line == "":
continue
texts.append(line)
except:
#ここに来たということは、読み取り時にエラーが起きたということ
#この行をスキップ!
pass
f.close()
readline()
で一行ずつ読んでいって、エラー起きた時のハンドリングでスキップさせればいいということでした!