teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足を追加

2021/02/12 15:58

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -4,9 +4,18 @@
4
4
 
5
5
  以下、細かい説明。
6
6
 
7
- 質問文のリンク先の動画を見てみましたが、基になる単語を「英語漬け.com」(https://eigo-duke.com/)というサイトの単語表からテキストエディターにコピペして作っていますね。
7
+ 質問文のリンク先の動画を見てみましたが、基になる単語を「英語漬け.com」([https://eigo-duke.com/](https://eigo-duke.com/))というサイトの単語表からテキストエディターにコピペして作っていますね。
8
8
 
9
9
  この動画が作られた当時の単語表と、現在の同じサイトの単語表では、**表の内容が変わっています**。
10
10
  英単語と日本語だけでなく、音声再生用のボタンやチェックボックスが追加されているので、ブラウザーから単なるコピペするだけでは、質問のコードが想定しているデータが得られません。
11
11
 
12
- コピペで得られたテキストを(不要な部分を削除したり、行を連結したりして)加工し、1行にひとつずつ英単語と日本語がタブ区切りで書かれたデータを作ってやると、質問文のコードのままで、「選択肢が4つ揃い、正解が含まれている」実行結果が得られました。
12
+ コピペで得られたテキストを(不要な部分を削除したり、行を連結したりして)加工し、1行にひとつずつ英単語と日本語がタブ区切りで書かれたデータを作ってやると、質問文のコードのままで、「選択肢が4つ揃い、正解が含まれている」実行結果が得られました。
13
+
14
+ なお、現在のコードのままでは、「日本語の説明中に英小文字があるとパースが破綻する」という問題と、「正規表現に`\s`を指定しようとして失敗している」という問題があるので、以下のように修正したほうがいいでしょう。
15
+
16
+ ```Diff
17
+ -english_words = re.findall('[a-z]+', data)
18
+ +english_words = re.findall('^[a-z]+', data, re.MULTILINE)
19
+ -ja = re.findall('\s.*\n', data)
20
+ +ja = re.findall(r'\s.*\n', data)
21
+ ```