LoginSignup
0
0

More than 1 year has passed since last update.

【Python】ファイル読み込み時にデコードエラーの行をスキップする

Last updated at Posted at 2022-12-28

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()で一行ずつ読んでいって、エラー起きた時のハンドリングでスキップさせればいいということでした!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0