質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

899閲覧

UnicodeDecodeError

n_thk72

総合スコア19

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/06/07 16:26

テキストファイルを読み込み、その行数を読むプログラムを書いているのですが、以下のエラーが出てしまいます。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 8: invalid continuation byte

また、実行しているコードは以下の通りです。

import codecs lines=0 f = codecs.open('hightemp.txt', 'r', 'utf-8') for line in f: lines=lines+1 print(lines) f.close()

様々なWebページで解決法を探しましたが、解決に至っておりません。
自力で解決しようとしていた上で調べた実行環境は以下の通りです。
・ソースコードのエンコーディング…UTF-8
・デフォルトエンコーディング…UTF-8
・ロケール設定…UTF-8

その他設定を確認すべき箇所がありましたらご指摘お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

Macのテキストファイルだったのですが、新たにファイルを作り直したら正常に動作されることが確認されました。
お手数おかけして申し訳ありません。
お二方、回答ありがとうございました。

投稿2019/06/10 16:03

n_thk72

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

可能性として、UTF-8以外の文字がファイル内に含まれている可能性があります。
codecsを使用した方法で、

python

1with codecs.open('file/to/path', 'r', 'utf-8', 'ignore') as f: 2 for line in f: 3 line = line.strip()

のようにutf-8以外の文字が来たらその行を無視するというやり方もありますので一応共有いたします。

投稿2019/06/07 17:24

fumito_94

総合スコア679

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

他に確認すべき箇所であれば、 「hightemp.txt」ファイルのエンコーディングです。

【追記】
開いたファイルがUTF-8ということであれば、このコードは動きそうです。
実際にこちらで動かしてみたところ動きます。

「hightemp.txt」がUTF-8であることはどのように確認していますか。
また、fumito_94 さんの指摘されているように、不正なものが含まれている可能性もあります。
単に行数だけ数えたいのであれば、不正な部分を無視といのもありだと思います。

他のUTF-8のファイルで試すとどうでしょう。

投稿2019/06/07 16:37

編集2019/06/07 17:41
TakaiY

総合スコア12657

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

n_thk72

2019/06/07 16:40

確認したところ、UTF-8でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問