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

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

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

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

Q&A

0回答

439閲覧

PyAutoGUIでブラウザ上に表示された文字列をコピー・保存しようとするとデコードエラーとなってしまう

numin

総合スコア19

Python 3.x

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

0グッド

0クリップ

投稿2023/05/19 04:54

編集2023/05/25 02:22

実現したいこと

PythonのPyAutoGUI・Pyperclipライブラリを利用して、「あるサイトで出力されたページの内容をコピー・保存後、必要な情報のみをテキストファイルに保存しなおす」というプログラムを作成しています。

前提

「サイトから必要な情報をコピー・保存する」という段階は問題なく実行されているのですが、その後必要な情報のみを抜き出して保存しなおす処理を行おうとすると下記のようなデコードエラーが表示されてしまいます。

※5/22AM追記:
エラーは1つ目のファイル「01.txt」の時点で発生しており、該当ファイルの1行目の内容(検証時)は「Nu Html Checker」です。
なお、エンコーディングはメモ帳で確認するとUTF-8、コメント欄で教えていただいた方法(pythonのchardetライブラリ使用)で確認すると「MacRoman', 'confidence': 0.4850749971805571, 'language': ''}」となります。

※5/22PM追記:
コメント欄で教えていただいた通り、読み込むテキストファイルのエンコーディングを「ISO-8859-1」に変更したところ、エラーコードは表示されなくなりました。
ただ、今回作成しているプログラムは「ウェブページの内容を保存したテキストファイルを読み込み、条件(errorlist)に当てはまる行のみを取得して「output.txt」に保存する」ところまでが処理の流れになっているのですが、エラーメッセージが表示されなくなっても「output.txt」の中身は「 results.write(f'\nページ{base}\n')」で記入したページ番号以外空白のままです。
もしかしたら読み取るテキストファイルのエンコーディングがMacRomanだと配列「errorlist」の中身を読み取れないということなのでしょうか。
見当違いなことを伺ってしまっているかもしれませんが、教えていただければ幸いです。

※5/23AM追記:
コメント欄でご提案いただいたように、「list」と「errors」を比較する段階で、両者の内容をprintするよう処理を変更して確認してみました。
結果としては下記の通り、見た目上では抽出条件に合った内容が複数見つかりましたが、「output.txt」にはやはり反映されていませんでした。

(list): 「Showing results for https://teratail.com/」
(errors): 「Showing results for」

※5/25AM追記:
コメント欄で教えていただいた方法で「Showing results for...」の行のみ残してアスキーコードを調べてみましたが、文字化けしている上、テキストファイルに保存された結果が50万文字超になってしまいました。
下記、結果のはじめの1000文字程度のみ記載します。

line: ÐÏࡱá >  þÿ       þÿÿÿ Y ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿ þÿÿÿ þÿÿÿþÿÿÿ 
c: Ðc: 208c: Ïc: 207c: c: 17c: àc: 224c: ¡c: 161c: ±c: 177c: c: 26c: ác: 225c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: >c: 62c: c: 0c: c: 3c: c: 0c: þc: 254c: ÿc: 255c: c: 9c: c: 0c: c: 6c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 2c: c: 0c: c: 0c: c: 0c: c: 1c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 16c: c: 0c: c: 0c: c: 2c: c: 0c: c: 0c: c: 0c: c: 1c: c: 0c: c: 0c: c: 0c: þc: 254c: ÿc: 255c: ÿc: 255c: ÿc: 255c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: c: 0c: Yc: 89c: c: 0c: c: 0c: c: 0c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c: ÿc: 255c:

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

Traceback (most recent call last): File "auto-validator.py", line 79, in <module> lines = file.readlines() File "codecs.py", line 322, in decode UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte Traceback (most recent call last): File "auto-validator.py", line 79, in <module> lines = file.readlines() File "codecs.py", line 322, in decode UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte

該当のソースコード

python

1import pyautogui as pg 2import pyperclip as pc 3import playsound as ps 4import time 5import os 6import sys 7 8# 出力用フォルダの用意 9foldername = 'input' 10is_folder = os.path.isdir(foldername) 11if not is_folder: 12 os.mkdir(foldername) 13 14# コピーしたURLの分割 15urls = pc.paste() 16urlList = urls.splitlines() 17 18# Chromeの起動 19pg.hotkey('win', 'r'); 20pc.copy('chrome.exe') 21pg.hotkey('ctrl', 'v') 22pg.hotkey('enter') 23time.sleep(4) 24 25# URLの数だけループさせる 26for line in urlList: 27 pg.hotkey('ctrl', 'l'); 28 pc.copy(line) 29 time.sleep(0.5) 30 pg.hotkey('ctrl', 'v'); 31 time.sleep(0.5) 32 pg.hotkey('enter') 33 time.sleep(5) 34 pg.hotkey('ctrl', 'l') 35 pc.copy(""":void(window.location='https://validator.w3.org/check?uri=%27+encodeURIComponent(window.location))""") 36 time.sleep(0.5) 37 pg.write('javascript') 38 time.sleep(1) 39 pg.hotkey('ctrl', 'v') 40 time.sleep(0.5) 41 pg.hotkey('enter') 42 time.sleep(6) 43 if urlList.index(line) == 0: 44 time.sleep(3) 45 pg.hotkey('ctrl', 'a') 46 time.sleep(1) 47 pg.hotkey('ctrl', 'c') 48 time.sleep(1) 49 # テキストへの出力 50 i = 1 51 if i < 10: 52 filename = f'{foldername}/0{i}.txt' 53 else: 54 filename = f'{foldername}/{i}.txt' 55 is_file = os.path.isfile(filename) 56 while is_file: 57 i += 1 58 if i < 10: 59 filename = f'{foldername}/0{i}.txt' 60 else: 61 filename = f'{foldername}/{i}.txt' 62 is_file = os.path.isfile(filename) 63 f = open(filename, 'w', encoding='UTF-8') 64 restxt = pc.paste() 65 f.write(restxt) 66 time.sleep(3) 67 f.close() 68 time.sleep(2) 69pg.hotkey('alt', 'f4') 70 71results = open('output.txt', 'a', encoding='UTF-8') 72errorlist = ['Showing results for', 'Consider adding a lang attribute to ', 'Element title must not be empty', 'seen when expecting text or an end tag.', 'Unclosed element ', 'not allowed as child of element', 'element in scope but a * end tag seen', 'Duplicate ID ', 'The first occurrence of ID ', 'Duplicate attribute ', 'End tag * seen, but there were open elements', 'Stray end tag ', 'inside comment', 'End of file seen and there were open elements', 'not allowed on element ', 'is missing one or more of the following attributes', 'seen but an element of the same type was already open', 'Fatal Error', 'No space between attributes', 'Saw " when expecting an attribute name', 'is missing a required instance of child element ', 'Quote " in attribute name. Probable cause: Matching quote missing somewhere earlier', 'consecutive hyphens in a comment'] 73 74for filename in os.listdir('input'): 75 base, ext = os.path.splitext(filename) 76 if ext == '.txt': 77 with open(f'input\{filename}', 'r', encoding='UTF-8') as file: 78 results.write(f'\nページ{base}\n') 79 lines = file.readlines() 80 for idx, line in enumerate(lines): 81 for errors in errorlist: 82 if errors in line: 83 results.write(line) 84 results.write(lines[idx + 1]) 85 results.write(lines[idx + 2]) 86results.close() 87 88ps.playsound(r'C:\Windows\Media\tada.wav')

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

なお、OSはWindows 10、Chromeのバージョンはバージョン: 113.0.5672.127(Official Build) (64 ビット)です。

よろしくお願いします。

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

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

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

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

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

can110

2023/05/19 05:01

エラー発生時に読み込んでいるファイル名を確認し、そのファイルの文字コードをテキストエディタなりで確認した結果を記載ください。 (フォルダ「input」にそのコードで保存したもの**ではない他の**.txtが混じっている可能性はないか?)
numin

2023/05/19 05:36

ご指摘いただきありがとうございます。 エラーが発生しているのは1つ目のファイル(01.txt)で、メモ帳で確認する限りUTF-8で保存されているようです。 よろしくお願いします。
can110

2023/05/19 06:05

0xd0 in position 0: invalid continuation byte というエラーなので、ファイル先頭の文字がおかしいと思われます。 01.txtの先頭の数文字はメモ帳では具体的にどのような文字列になっていますか?
numin

2023/05/19 07:03

拾ってくる情報によるので毎回内容は違いますが、今のところ全てでエラーになっています。 以下、具体例です。 「Showing results for https://...」、「メインコンテンツへスキップ」、改行コードなど よろしくお願いします。
can110

2023/05/19 07:35

0xd0 in position 0: invalid continuation byte というエラーが発生したときの特定のファイル(この場合は01.txtでしょうか)に注目すべきです。 そのときの文字列は具体的にどのようなものだったでしょうか? あるいは、再現条件を固定した方がよいです。 たとえば以下の手順ですすめるとよいでしょう。 - いったんinputフォルダを空にする。 - 実行するurlは一つだけにする。 - GUI操作中の「restxt = pc.paste()」のあとに「print(nestxt)」を追加して中身を確認する。 - 後続のreadlinesでエラーが発生する(はずな)のでエラーメッセージ(どの位置の文字がおかしいか)を確認する。 - 作成された01.txtの中身をメモ帳でprintしたものと同じか?文字コードはUTF-8か?を確認する。
jbpb0

2023/05/22 00:48

> (pythonのchardetライブラリ使用)で確認すると「cRoman', 'confidence': 0.4850749971805571, 'language': ''}」 「cRoman」ではなく「MacRoman」ですか? https://github.com/chardet/chardet もしそうなら、 > with open(f'input\{filename}', 'r', encoding='UTF-8') as file: の「UTF-8」を「ISO-8859-1」に変えたら、どうなりますでしょうか?
numin

2023/05/22 02:07

はい、「macRoman」のまちがいでした。失礼しました。 ご提案いただいた方法でエンコーディングのエラーそのものは解決されたようなのですが、出力される「output.txt」に内容が反映されていないことには変わりないようでした。 他にも、pythonファイルそのもののエンコーディングなども変更する必要があるのでしょうか。 よろしくお願いします。
jbpb0

2023/05/22 03:36

> 出力される「output.txt」に内容が反映されていないことには変わりない 何をどのように確認してるのかを、具体的に教えてください > ご提案いただいた方法でエンコーディングのエラーそのものは解決された を含めて、ここに書くのではなく、質問を編集して追記してください
jbpb0

2023/05/22 08:17 編集

> 「output.txt」の中身は「 results.write(f'\nページ{base}\n')」で記入したページ番号以外空白のまま は、 > for errors in errorlist: のすぐ下で、都度その時の「line」と「errors」を表示させてみて、 > if errors in line: が成立するはずなのかを確認してみたらいかがでしょうか
jbpb0

2023/05/23 05:58 編集

> 見た目上では抽出条件に合った内容が複数見つかりましたが、「output.txt」にはやはり反映されていませんでした。 (list): 「Showing results for https://teratail.com/」 (errors): 「Showing results for」 見た目では分からない相違点があるのかもしれません > for idx, line in enumerate(lines): のすぐ下に print("line: " + str(line)) for c in line: print("c: " + str(c)) print("c: " + str(ord(c))) を(インデントを適切に付けて)追加して実行したら、「line」中の各文字のアスキーコードが表示されます うまくいかない「01.txt」での、 > (list): 「Showing results for https://teratail.com/」 の時に表示されるアスキーコードを記録してください 次に、テキストエディターで新規に、内容が Showing results for https://teratail.com/ だけのテキストファイルを作成してください (「01.txt」とかを流用するのではなく、全く新規にファイルを作成してください) ファイルのエンコードは、「UTF-8」と「ISO-8859-1」のどちらでも大丈夫です 上記の文字列だけなら、両者に違いは無いはずなので 新規作成したテキストファイルを「01.txt」の代わりに使って、表示されるアスキーコードを記録してください 記録したアスキーコードに、相違点はありませんでしょうか?
numin

2023/05/24 08:04

申し訳ありません。 頂いた指示を元にアスキーコードを表示させてみようとしたのですが、「Showing results for...」の列しか残さずに抽出処理のコードを実行してもいつまでも終わる気配がなく、無限にprintされている様子でした。 知識不足でおかしなことをしてしまっているのかもしれませんが....。 下記結果の一部なのですが、そもそも01.txtの内容と違ってしまっている: 81 c: B c: 66 c: M c: 77 c: A c: 65 c: G c: 71 c: k c: 107 c: A c: 65 c: d c: 100 c: A c: 65 c: A c: 65 c: r c: 114 c: A c: 65 c: H c: 72 c: E c: 69 c: A c: 65 c: c c: 99 c: A c: 65 c: B c: 66 c: P c: 80 c: A c: 65 c: D c: 68 c: Y c: 89 c: A c: 65 c: K c: 75 c: w c: 119 c: B c: 66 c: X c: 88 c: A c: 65 c: C c: 67 c: 8 c: 56 c: A c: 65 c: W c: 87 c: g c: 103 c: B c: 66 c: l c: 108 c: A c: 65 c: E c: 69 c: c c: 99 c: A c: 65 c: Z c: 90 c: A c: 65 c: A c: 65 c: x c: 120 c: A c: 65 c: E c: 69 c: E c: 69 c: A c: 65 c: e c: 101 c: A c: 65 c: B c: 66 c: i c: 105 c: A c: 65 c: E c: 69 c: U c: 85 c: A c: 65 c: e c: 101 c: Q c: 81 c: B c: 66 c: R c: 82 c: A c: 65 c: D c: 68 c: g c: 103 c: A c: 65 c: b c: 98 c: A c: 65 c: B c: 66 c: j c: 106 c: A c: 65 c: D c: 68 c: 0 c: 48 c: A c: 65 c: P c: 80 c: A c: 65 c: A c: 65 c: v c: 118 c: A c: 65 c: F c: 70 c: Y c: 89 c: A c: 65 c: Q c: 81 c: Q c: 81 c: B c: 66 c: M c: 77 c: A c: 65 c: F c: 70 c: U c: 85 c: A c: 65 c: R c: 82 c: Q c: 81 c: A c: 65 c: + c: 43 c: A c: 65 c: D c: 68 c: w c: 119 c: A c: 65 c: L c: 76 c: w c: 119 c: B c: 66 c: E c: 69 c: A c: 65 c: E c: 69 c: k c: 107 c: A c: 65 c: R c: 82 c: w c: 119 c: B c: 66 c: F c: 70 c: A c: 65 c: F c: 70 c: M c: 77 c: A c: 65 c: V c: 86 c: A c: 65 c: A c: 65 c: + c: 43 c: A c: 65 c: D c: 68 c: w c: 119 c: A c: 65 c: Q c: 81 c: Q c: 81 c: B c: 66 c: M c: 77 c: A c: 65 c: E c: 69 c: c c: 99 c: A c: 65 c: T c: 84 c: w c: 119 c: B c: 66 c: S c: 83 c: A c: 65 c: E c: 69 c: k c: 107 c: A c: 65 c: V c: 86 c: A c: 65 c: B c: 66 c: I c: 73 c: A c: 65 c: E c: 69 c: 0 c: 48 c: A c: 65 c: P c: 80 c: g c: 103 c: B c: 66 c: S c: 83 c: A c: 65 c: F c: 70 c: M c: 77 c: A c: 65 c: Q c: 81 c: Q c: 81 c: A c: 65 c: g c: 103 c: A c: 65 c: F c: 70 c: A c: 65 c: A c: 65 c: S c: 83 c: w c: 119 c: B c: 66 c: D c: 68 c: A c: 65 c: F c: 70 c: M c: 77 c: A c: 65 c: I c: 73 c: w c: 119 c: A c: 65 c: x c: 120 c: A c: 65 c: C c: 67 c: 0 c: 48 c: A c: 65 c: V c: 86 c: g c: 103 c: A c: 65 c: x c: 120 c: A c: 65 c: C c: 67 c: 4 c: 52 c: A c: 65 c: N c: 78 c: Q c: 81 c: A c: 65 c: 8 c: 56 c: A c: 65 c: C c: 67 c: 8 c: 56 c: A c: 65 c: Q c: 81 c: Q c: 81 c: B c: 66 c: M c: 77 c: A c: 65 c: E c: 69 c: c c: 99 c: A c: 65 c: T c: 84 c: w c: 119 c: B c: 66 c: S c: 83 c: A c: 65 c: E c: 69 c: k c: 107 c: A c: 65 c: V c: 86 c: A c: 65 c: B c: 66 c: I c: 73 c: A c: 65 c: E c: 69 c: 0 c: 48 c: A c: 65 c: P c: 80 c: g c: 103 c: A c: 65 c: 8 c: 56 c: A c: 65 c: F c: 70 c: Y c: 89 c: A c: 65 c: Q c: 81 c: Q c: 81 c: B c: 66 c: M c: 77 c: A c: 65 c: F c: 70 c: U c: 85 c: A c: 65 c: R c: 82 c: Q c: 81 c: A c: 65 c: g c: 103 c: A c: 65 c: G c: 71 c: U c: 85 c: A c: 65 c: b c: 98 c: g c: 103 c: B c: 66 c: j c: 106 c: A c: 65 c: G c: 71 c: 8 c: 56 c: A c: 65 c: Z c: 90 c: A c: 65 c: B c: 66 c: p c: 112 c: A c: 65 c: G c: 71 c: 4 c: 52 c: A c: 65 c: Z c: 90 c: w c: 119 c: A c: 65 c: 9 c: 57 c: A c: 65 c: C c: 67 c: I c: 73 c: A c: 65 c: Y c: 89 c: g c: 103 c: B c: 66 c: h c: 104 c: A c: 65 c: H c: 72 c: M c: 77 c: A c: 65 c: Z c: 90 c: Q c: 81 c: A c: 65 c: 2 c: 50 c: A c: 65 c: D c: 68 c: Q c: 81 c: A c: 65 c: I c: 73 c: g c: 103 c: A c: 65 c: g c: 103 c: A c: 65 c: H c: 72 c: M c: 77 c: A c: 65 c: a c: 97 c: Q c: 81 c: B c: 66 c: 6 c: 54 c: A c: 65 c: G c: 71 c: U c: 85 c: A c: 65 c: P c: 80 c: Q c: 81 c: A c: 65 c: i c: 105 c: A c: 65 c: D c: 68 c: I c: 73 c: A c: 65 c: M c: 77 c: A c: 65 c: A c: 65 c: 0 c: 48 c: A c: 65 c: D c: 68 c: g c: 103 c: A c: 65 c: I c: 73 c: g c: 103 c: A c: 65 c: + c: 43 c: A c: 65 c: G c: 71 c: 4 c: 52 c: A c: 65 c: S c: 83 c: Q c: 81 c: B c: 66 c: B c: 66 c: A c: 65 c: E c: 69 c: o c: 111 c: A c: 65 c: Q c: 81 c: w c: 119 c: A c: 65 c: r c: 114 c: A c: 65 c: E c: 69 c: g c: 103 c: A c: 65 c: V c: 86 c: w c: 119 c: B c: 66 c: M c: 77 c: A c: 65 c: H c: 72 c: o c: 111 c: A c: 65 c: V c: 86 c: g c: 103 c: B c: 66 c: j c: 106 c: A c: 65 c: D c: 68 c: U c: 85 c: A c: 65 c: b c: 98 c: A c: 65 c: B c: 66 c: H c: 72 c: A c: 65 c: C c: 67 c: s c: 115 c: A c: 65 c: a c: 97 c: w c: 119 c: B c: 66 c: i c: 105 c: A c: 65 c: E c: 69 c: c c: 99 c: A c: 65 c: O c: 79 c: Q c: 81 c: B c: 66 c: 3 c: 51 c: A c: 65 c: F c: 70 c: Q c: 81 c: A c: 65 c: L c: 76 c: w c: 119 c: B c: 66 c: V c: 86 c: A c: 65 c: H c: 72 c: Y c: 89 c: A c: 65 c: Q c: 81 c: Q c: 81 c: B c: 66 c: M c: 77 c: A c: 65 c: E c: 69 c: k c: 107 c: A c: 65 c: V c: 86 c: g c: 103 c: B c: 66 c: n c: 110 c: A c: 65 c: C c: 67 c: 8 c: 56 c: A c: 65 c: Z c: 90 c: Q c: 81 c: B c: 66 c: O c: 79 c: A c: 65 c: E c: 69 c: w c: 119 c: A c: 65 c: O c: 79 c: A c: 65 c: B c: 66 c: 2 c: 50 c: A c: 65 c: G c: 71 c: U c: 85 c: A c: 65 c: S c: 83 c: g c: 103 c: B c: 66 c: j c: 106 c: A c: 65 c: E c: 69 c: M c: 77 c: A c: 65 c: M c: 77 c: Q c: 81 c: B c: 66 c: I c: 73 c: A c: 65 c: E c: 69 c: U c: 85 c: A c: 65 c: a c: 97 c: Q c: 81 c: B c: 66 c: P c: 80 c: A c: 65 c: D c: 68 c: E c: 69 c: A c: 65 c: R c: 82 c: g c: 103 c: B c: 66 c: y c: 121 c: A c: 65 c: C c: 67 c: s c: 115 c: A c: 65 c: V c: 86 c: Q c: 81 c: B c: 66 c: X c: 88 c: A c: 65 c: H c: 72 c: g c: 103 c: A c: 65 c: b c: 98 c: g c: 103 c: B c: 66 c: 4 c: 52 c: A c: 65 c: F c: 70 c: k c: 107 c: A c: 65 c: S c: 83 c: A c: 65 c: A c: 65 c: w c: 119 c: A c: 65 c: E c: 69 c: E c: 69 c: A c: 65 c: Y c: 89 c: w c: 119 c: B c: 66 c: j c: 106 c: A c: 65 c: E c: 69 c: w c: 119 c: A c: 65 c: V c: 86 c: g c: 103 c: B c: 66 c: 3 c: 51 c: A c: 65 c: H c: 72 c: Q c: 81 c: A c: 65 c: N c: 78 c: g c: 103 c: B c: 66 c: 5 c: 53 c: A c: 65 c: G c: 71 c: 0 c: 48 c: A c: 65 c: e c: 101 c: g c: 103 c: B c: 66 c: Z c: 90 c: A c: 65 c: F c: 70 c: I c: 73 c: A c: 65 c: R c: 82 c: Q c: 81 c: B c: 66 c: 6 c: 54 c: A c: 65 c: G c: 71 c: 4 c: 52 c: A c: 65 c: Q c: 81 c: w c: 119 c: B c: 66 c: H c: 72 c: A c: 65 c: E c: 69 c: Q c: 81 c: A c: 65 c: b c: 98 c: g c: 103 c: B c: 66 c: D c: 68 c: A c: 65 c: C c: 67 c: s c: 115 c: A c: 65 c: U c: 85 c: Q c: 81 c: B c: 66 c: w c: 119 c: A c: 65 c: G c: 71 c: U c: 85 c: A c: 65 c: T c: 84 c: Q c: 81 c: A c: 65 c: 4 c: 52 c: A c: 65 c: E c: 69 c: g c: 103 c: A c: 65 c: d c: 100 c: A c: 65 c: B c: 66 c: x c: 120 c: A c: 65 c: F c: 70 c: c c: 99 c: A c: 65 c: e c: 101 c: g c: 103 c: B c: 66 c: Q c: 81 c: A c: 65 c: C c: 67 c: 8 c: 56 c: A c: 65 c: S c: 83 c: Q c: 81 c: B c: 66 c: U c: 85 c: A c: 65 c: G c: 71 c: o c: 111 c: A c: 65 c: U c: 85 c: g c: 103 c: B c: 66 c: 6 c: 54 c: A c: 65 c: F c: 70 c: c c: 99 c: A c: 65 c: M c: 77 c: w c: 119 c: B c: 66 c: O c: 79 c: A c: 65 c: G c: 71 c: 0 c: 48 c: A c: 65 c: Z c: 90 c: g c: 103 c: A c: 65 c: 4 c: 52 c: A c: 65 c: E c: 69 c: g c: 103 c: A c: 65 c: d c: 100 c: A c: 65 c: A c: 65 c: w c: 119 c: A c: 65 c: G c: 71 c: Q c: 81 c: A c: 65 c: T c: 84 c: A c: 65 c: B c: 66 c: o c: 111 c: A c: 65 c: G c: 71 c: c c: 99 c: A c: 65 c: b c: 98 c: A c: 65 c: B c: 66 c: R c: 82 c: A c: 65 c: G c: 71 c: c c: 99 c: A c: 65 c: S c: 83 c: w c: 119 c: B c: 66 c: 3 c: 51 c: A c: 65 c: E c: 69 c: M c: 77 c: A c: 65 c: R c: 82 c: A c: 65 c: B c: 66 c: u c: 117 c: A c: 65 c: D c: 68 c: U c: 85 c: A c: 65 c: b c: 98 c: A c: 65 c: B c: 66 c: J c: 74 c: A c: 65 c: D c: 68 c: g c: 103 c: A c: 65 c: L c: 76 c: w c: 119 c: B c: 66 c: L c: 76 c: A c: 65 c: F c: 70 c: g c: 103 c: A c: 65 c: a c: 97 c: Q c: 81 c: B c: 66 c: h c: 104 c: A c: 65 c: F c: 70 c: U c: 85 c: A c: 65 c: V c: 86 c: g c: 103 c: B c: 66 c: N c: 78 c: A c: 65 c: G c: 71 c: I c: 73 c: A c: 65 c: S c: 83 c: w c: 119 c: A c: 65 c: 0 c: 48 c: A c: 65 c: F c: 70 c: M c: 77 c: A c: 65 c: M c: 77 c: Q c: 81 c: B c: 66 c: p c: 112 c: A c: 65 c: F c: 70 c: g c: 103 c: A c: 65 c: V c: 86 c: g c: 103 c: A c: 65 c: 3 c: 51 c: A c: 65 c: G c: 71 c: o c: 111 c: A c: 65 c: S c: 83 c: Q c: 81 c: B c: 66 c: Q c: 81 c: A c: 65 c: G c: 71 c: g c: 103 c: A c: 65 c: O c: 79 c: A c: 65 c: B c: 66 c: F c: 70 c: A c: 65 c: G c: 71 c: I c: 73 c: A c: 65 c: Z c: 90 c: g c: 103 c: A c: 65 c: 0 c: 48 c: A c: 65 c: E c: 69 c: Q c: 81 c: A c: 65 c: V c: 86 c: Q c: 81 c: B c: 66 c: 5 c: 53 c: A c: 65 c: E c: 69 c: s c: 115 c: A c: 65 c: S c: 83 c: A c: 65 c: B c: 66 c: j c: 106 c: A c: 65 c: D c: 68 c: I c: 73 c: A c: 65 c: Q c: 81 c: g c: 103 c: B c: 66 c: 2 c: 50 c: A c: 65 c: H c: 72 c: M c: 77 c: A c: 65 c: b c: 98 c: Q c: 81 c: A c: 65 c: 3 c: 51 c: A c: 65 c: F c: 70 c: A c: 65 c: A c: 65 c: Z c: 90 c: w c: 119 c: B c: 66 c: q c: 113 c: A c: 65 c: G c: 71 c: 0 c: 48 c: A c: 65 c: b c: 98 c: Q c: 81 c: B c: 66 c: q c: 113 c: A c: 65 c: F c: 70 c: U c: 85 c: A c: 65 c: b c: 98 c: g c: 103 c: B c: 66 c: R c: 82 c: A c: 65 c: E c: 69 c: I c: 73 c: A c: 65 c: M c: 77 c: Q c: 81 c: B c: 66 c: o c: 111 c: A c: 65 c: G c: 71 c: M c: 77 c: A c: 65 c: S c: 83 c: Q c: 81 c: B c: 66 c: T c: 84 c: A c: 65 c: F c: 70 c: Y c: 89 c: A c: 65 c: M c: 77 c: Q c: 81 c: B c: 66 c: l c: 108 c: A c: 65 c: H c: 72 c: Q c: 81 c: A c: 65 c: W c: 87 c: A c: 65 c: B c: 66 c: t c: 116 c: A c: 65 c: E c: 69 c: w c: 119 c: A c: 65 c: Z c: 90 c: A c: 65 c: B c: 66 c: y c: 121 c: A c: 65 c: F c: 70 c: g c: 103 c: A c: 65 c: M c: 77 c: A c: 65 c: B c: 66 c: K c: 75 c: A c: 65 c: F c: 70 c: M c: 77 c: A c: 65 c: R c: 82 c: w c: 119 c: B c: 66 c: t c: 116 c: A c: 65 c: H c: 72 c: A c: 65 c: A c: 65 c: S c: 83 c: Q c: 81 c: B c: 66 c: a c: 97 c: A c: 65 c: D c: 68 c: E c: 69 c: A c: 65 c: b c: 98 c: g c: 103 c: B c: 66 c: K c: 75 c: A c: 65 c: E c: 69 c: I c: 73 c: A c: 65 c: O c: 79 c: Q c: 81 c: B c: 66 c: B c: 66 c: A c: 65 c: E c: 69 c: M c: 77 c: A c: 65 c: e c: 101 c: A c: 65 c: B c: 66 c: i c: 105 c: A c: 65 c: H c: 72 c: I c: 73 c: A c: 65 c: a c: 97 c: Q c: 81 c: B c: 66 c: V c: 86 c: A c: 65 c: D c: 68 c: M c: 77 c: A c: 65 c: c c: 99 c: w c: 119 c: A c: 65 c: z c: 122 c: A c: 65 c: F c: 70 c: g c: 103 c: A c: 65 c: V c: 86 c: A c: 65 c: A c: 65 c: y c: 121 c: A c: 65 c: E c: 69 c: 8 c: 56 c: A c: 65 c: T c: 84 c: Q
jbpb0

2023/05/24 23:56 編集

質問に > (list): 「Showing results for https://teratail.com/」 と書かれてるので「Showing results for https://teratail.com/」 を例にしましたが、比較するのは「01.txt」の行であれば何でもいいので、たとえば「01.txt」の最初の行とか最後の行とか、探しやすい行を使って比較したらいいと思います また、 python auto-validator.py > output.txt のようにして実行して、表示結果を全部テキストファイルに保存してから、保存したテキストファイル中から比較したい行を探せば、該当行を見つけやすいと思います ちなみに、当方のmacで、テキストファイルに Showing results for https://teratail.com/ と書いて、そのテキストファイルを使って実行した結果は、下記の通りです ***** ここから ***** line: Showing results for https://teratail.com/ c: S c: 83 c: h c: 104 c: o c: 111 c: w c: 119 c: i c: 105 c: n c: 110 c: g c: 103 c: c: 32 c: r c: 114 c: e c: 101 c: s c: 115 c: u c: 117 c: l c: 108 c: t c: 116 c: s c: 115 c: c: 32 c: f c: 102 c: o c: 111 c: r c: 114 c: c: 32 c: h c: 104 c: t c: 116 c: t c: 116 c: p c: 112 c: s c: 115 c: : c: 58 c: / c: 47 c: / c: 47 c: t c: 116 c: e c: 101 c: r c: 114 c: a c: 97 c: t c: 116 c: a c: 97 c: i c: 105 c: l c: 108 c: . c: 46 c: c c: 99 c: o c: 111 c: m c: 109 c: / c: 47 c: c: 10 ***** ここまで ***** まず最初に行全体が上記例の「line: Showing results for https://teratail.com/」 のように表示されるので、それが目印になります それ以降は、1文字ずつ文字とアスキーコードが表示されます (一番最後の「10」は改行で、それはmacとwindowsのテキストファイルでは異なると思います)
jbpb0

2023/05/25 02:43

> 「Showing results for...」の行のみ残してアスキーコードを調べてみましたが、文字化けしている あれ? > (list): 「Showing results for https://teratail.com/」 (errors): 「Showing results for」 を表示させた時は、文字化けしてなかったのですよね? 上記の「(list):...」と、 print("line: " + str(line)) で表示される「line:...」は、同じものだと思ってたのですが、違うのでしょうか? > (list): 「Showing results for https://teratail.com/」 (errors): 「Showing results for」 は、どのようにして表示させたのでしょうか?
jbpb0

2023/05/25 07:11

テキストエディターで新規に、内容が Showing results for https://teratail.com/ だけのテキストファイルを作成して、同様にアスキーコードを表示させたら、私の二つ前のコメントに書いたように文字化けせずに表示されるはずですので、そちらもご確認ください つまり、文字化けするようなデータが「01.txt」に入ってるわけで、そのデータは > with open(f'input\{filename}', 'r', encoding='UTF-8') as file: の「UTF-8」を「ISO-8859-1」に変えないとエラーになる原因でもあります そのデータは、 > 「サイトから必要な情報をコピー・保存する」という段階は問題なく実行されている の時から入ってるわけですから、その処理を見直す必要があると思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問