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

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

新規登録して質問してみよう
ただいま回答率
85.37%
文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

1回答

1053閲覧

pythonでソースコードを書いているファイルと違うファイルの中身を処理する方法

KanG

総合スコア0

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

1クリップ

投稿2020/08/07 02:15

編集2020/08/07 12:06
コード ```### 前提・実現したいこと テキストファイルから数字を抜き出して全て足すというプログラムをatomで書きました Macのターミナルで実行しています ### 発生している問題・エラーメッセージ なぜエラーが出てしまうのかわかりません Courseraでpythonの授業をとっているのですが、そこではプログラムを書いても相対パスとか絶対パスというのは全く出てこなかったので自分のパソコンでどう実行できるのかわかりません。 初心者なので詳しくどうすべきなのか教えていただきたいです。 エラーメッセージ Traceback (most recent call last): File "p4_11_01.py", line 6, in <module> words = line.decode().split() UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 8: invalid continuation byte というエラーが出てしまいます ### 該当のソースコード python3.8.5を使っています ソースコード ```python3.8.5 コード import re import urllib.request,urllib.parse,urllib.error fhand = urllib.request.urlopen('file:///Users/owner/Desktop/first.file/regex_sum_42.webarchive') numlist = list() for line in fhand: words = line.decode().split() for word in words: y = re.findall('[0-9]+', word) numlist.append(y) Sum = 0 for str in numlist: num = int(str) Sum = Sum + num print(Sum) file.close

試したこと

atomで書いたプログラムであるp4_11_01.pyと、それを使って計算したいregex_sum_42.webarchiveの両方ともfirst.fileというのに入れてあります。
first.fileはDesktopに作成したフォルダでそこに二つとも入れているということです。
regex_sum_42.webarchiveは直接 'file:///Users/owner/Desktop/first.file/regex_sum_42.webarchive'に飛びます

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

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

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

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

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

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

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

quickquip

2020/08/07 04:36

> atomで書いたプログラムであるp4_11_01.pyと、それを使って計算したいregex_sum_42.webarchiveの両方ともfirst.fileというのに入れてあります この部分が他人に伝わるようになるとよいのですが。 コードはインデントがないと読めません。質問を編集して、コードを選択→<code>ボタン か 前後行を```で括るようにしましょう。 https://teratail.com/help#about-markdownhttps://teratail.com/help/question-tips#questionTips3-5-1 を参考にどうぞ。
meg_

2020/08/07 05:38

コードは「コードの挿入」で記入してください。
KanG

2020/08/07 11:42

first.fileはdesktopに作成したフォルダで、言い忘れたのですが、読み込むregex_sum_42.webarchiveは開くとwebページが開かれるタイプのものです
quickquip

2020/08/07 11:54

情報はここに書かないでください。質問を編集して追記してください。
guest

回答1

0

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

どこかの行の8バイト目に、0xd1というデータがあって、それがUTF-8で解釈した時にその位置にあってははならないデータだ
という意味です。
(ここまででも普通にコンピュータを触っている分には触れることがないそこそこ難しい話だとは思います。ですがプログラミングをしようとするならば、エラーが起きて対処する時は必ずでてきます。避けては通れません)

どうやって原因を探るかですが、まず入力しているファイルが本当にただしくUTF-8のファイルなのかを確認するのが先でしょう。
テキストエディタで読み込めるのでしょうか。

コードに手を入れて調べるには

python

1i = 1 2 3try: 4 for line in hand: 5 i += 1 6except UnicodeDecodeError: 7 print(i)

とかして何行目で起きているかを調べたりするなどでしょう。(雑な方法ですが)

投稿2020/08/07 04:34

quickquip

総合スコア11209

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

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

KanG

2020/08/07 12:10 編集

ファイルのopenをした後におっしゃるコードをそっくりそのまま写してターミナルで実行したところ何も結果は出なかったのでUTF-8のファイルということになるのかなと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問