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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

2213閲覧

txtファイルの読み込みについて

e11041_0126

総合スコア13

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/03/19 04:31

編集2019/03/19 04:59

前提・実現したいこと

現在pythonを練習中で下記サイトの連取問題01に
取り組んでいるのですが、leavetime.txtをJupiter noteで
読み込む事が出来ず、ネットで様々調べたのですが、
解決に至らず、質問させて頂きます。
宜しくお願い致します。
https://kirinwiki.com/wiki/doku.php/py:lesson1

発生している問題・エラーメッセージ

ソースコード

for line in open("leavetime.txt"): print(line) print("Finish!")

エラーメッセージ

UnicodeDecodeError Traceback (most recent call last) <ipython-input-3-7d5784d602fe> in <module> ----> 1 for line in open("leavetime.txt"): 2 print(line) 3 print("Finish!") /anaconda3/lib/python3.7/codecs.py in decode(self, input, final) 320 # decode input (taking the buffer into account) 321 data = self.buffer + input --> 322 (result, consumed) = self._buffer_decode(data, self.errors, final) 323 # keep undecoded input until the next call 324 self.buffer = data[consumed:] UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 44: invalid start byte

試したこと

txtデータがutf-8で書かれていないのかと思い、
エディターで確認しましたが、utf-8で表記になっておりました。

補足情報(FW/ツールのバージョンなど)

python3.7.1を使用しております。

ここにより詳細な情報を記載してください。

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

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

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

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

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

ryu22e

2019/03/19 04:37 編集

質問文にPythonのバージョンを書いてください。 ソースコードとエラーメッセージは、以下のようにバッククォート3つで囲って読みやすくしてください。 ``` ここにソースコードを書く ``` ``` ここにエラーメッセージを書く ``` 特にPythonのソースコードはインデントを実際のコードと同じにしてもらわないと、実行することができません。
stdio

2019/03/19 04:45

> 実際のコードと同じにしてもらわないと、実行することができません。 デバックでもしてあげるんですか? そんな過保護の親みたいに教える義理はどこにもないので手段だけ教えてあげればいいでしょう。 文字コードの問題かと思いますが念の為、見返してみるといいと思います。 https://yukun.info/python-file/
tiitoi

2019/03/19 04:57

テキストファイルの文字コードが utf-8 でないのではないでしょうか。 テキストファイルの文字コードを utf-8 に変換するか、open("leavetime.txt", encoding='shift-jis') のようにテキストファイルの文字コードを指定してみてください
stdio

2019/03/19 05:04

utf-8でもBom無しと有りの2種類があるよ。
t_obara

2019/03/19 05:05

とりあえず、テキストファイルを改行なしの英数字のみにしてみて試してみてはいかがでしょうか。問題の切り分けをするには簡単な構成で試していくのが王道かと思います。
guest

回答3

0

自己解決

データの保存方法が良くなかったようで、再度ダウンロードし直したところ上手く読み込めるようになりました。

投稿2019/03/19 06:20

e11041_0126

総合スコア13

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

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

0

途中、UTF-8 と見なされない文字が入っているのかもしれません。

Python 3でファイル読み込み時のUnicodeDecodeErrorを回避する のようにエラーを回避して読み込み、それを表示して元のテキストと比較すればどこに問題があるか特定できるのではないでしょうか。

投稿2019/03/19 05:34

Zuishin

総合スコア28660

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

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

e11041_0126

2019/03/19 06:18

回答ありがとうございます???? 試してみます????
guest

0

"leavetime.txt"というファイルが、BOM(Byte Order Mark)有りのUTF-8テキストファイルなのだと思われます。

BOMは、UTF-16などの多バイト文字のエンディアン(上位バイトを先に書く(Big Endian)か、下位バイトを先に書く(Little endian)かの別)を判断できるようにファイルの先頭に置かれる16ビットの値です。
エンコーディングが UTF-xx のテキストファイルには、このBOMがついているものと、ついていないものがありますが、pythonのopenではBOMなしのUTF-8テキストファイルが必要です。

BOM(Byte Order Mark)有りのUTF-8テキストファイルを、BOMなしに変えるには、TeraPad等のBOM無UTF-8で保存する機能を持つエディタで開いて、BOM無し(UTF-8N)形式で保存します。

ウィンドウのメモ帳でUTF-8のファイルを読み込むと、BOMを先頭に付けます。
メモ帳でBOMなしUTF-8を開いて、上書き保存するとBOM付きUTF-8のファイルに変わってしまうので、注意が必要です。

投稿2019/03/19 05:23

coco_bauer

総合スコア6915

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

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

e11041_0126

2019/03/19 06:18

回答ありがとうございます???? 勉強になりました????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問