迷走ブログ

ファウスト的衝動を抱き、迷走している、凡人による気まぐれブログです。

【python】スクレイピングしたデータを使って、問題集を作る練習。

はじめに

 

前回、スクレイピングをして、データを抽出しました。

せっかくなので、今回は、そのデータを使用して、問題集を作りたいなと思います。

 

 

取り組んだこと、プログラムの仕様

1、前回抽出したデータを整形

2、3通りの問題集を作成

3、その問題集は、英単語1000問の4択式。また、問題の順番はランダム

4、各問題の選択肢には、誤答が3つと正解が1つ。その順番もランダム

5、問題集と解答集をそれぞれのtextファイルに書き出す

 

f:id:yktmmrmtoosa03:20190330191918j:plain

完成予定の問題集

使用したモジュール

randam

問題や選択肢をランダムに並び替えるために使用します。

 

 本題

はじめに、前回取得したデータを整理します。

と言っても、ぼく自身python初心者でして、手探りです。したがって、申し訳ありません。ところどころ、強硬手段をとっています(笑)。

 

ここでは、前回抽出したデータを辞書型というものに整形したいと思います。

現在は、以下のような状態です。

f:id:yktmmrmtoosa03:20190328233044j:plain

前回抽出したデータ

そこで、次のように置き換えます。

f:id:yktmmrmtoosa03:20190330193816j:plain

僕がとった方法としては、「[」と「]」また「:」を空に置き換えて、「,」を「 」に置き換えました。それ以外、上手い方法が分かりませんでした。

 

そして、英単語の部分で、熟語として、「deal with」のような熟語には、前置詞の前に「ー」を入れることで、空から置き換えました。

 

まさに荒業です。

 

あとは、次のサイトのコードを参考にしました。

https://teratail.com/questions/108474

 

まず、encoding="utf-8"と指定しないと、windowsの場合、エラーが出ます。

また、辞書型にしたいのは、en(english)とjp(japanese)の部分です。numと書かれた要素はありませんので、削除します。

そして、それに伴い、 my_dict[en] = jpとしなければなりません。

f:id:yktmmrmtoosa03:20190330194905j:plain

辞書型で出力した結果

 

そして、出来上がった辞書型のデータを利用して、問題集と解答集を作成します。

コードは、『退屈なことはpythonにやらせよう』の第8章を写経しました。

 

写経と言っても、こちらもところどころ書き換えなければなりませんが。

 

1点目は、windowsの場合encoding="utf-8"をopen()に追記する必要があります。

2点目は、上記では辞書型として出力しています。しかし、僕は、一度、テキストファイルに書き込みました。そのため、パスでつなげなければなりません(別にコピペして、『退屈なことはpythonにやらせよう』のサンプルコードに入れるというのもありだと思います)。

3点目は、ヘッダーの部分 や問題文と選択肢を問題ファイルに書き込む際に、ところどころコードを追記しました。

 

 

おそらく著作権に引っかかるので、コードは載せられません。

 

おわりに

最初、僕は一からコードを書いて問題集を作ろうとしていました。

しかし、randomモジュールを使ったサンプル例が『退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング』に載っていたので、時短のためそちらを流用しました。

 

先人の知恵って素晴らしいですね。

 

参考文献

 randomモジュールを使った問題集のつくり方は、以下の書籍から参考にしました。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

 

辞書型に変更するためのプログラムは、以下のサイトを参考にしました。

https://teratail.com/questions/108474