はじめに
前回、スクレイピングをして、データを抽出しました。
せっかくなので、今回は、そのデータを使用して、問題集を作りたいなと思います。
取り組んだこと、プログラムの仕様
1、前回抽出したデータを整形
2、3通りの問題集を作成
3、その問題集は、英単語1000問の4択式。また、問題の順番はランダム
4、各問題の選択肢には、誤答が3つと正解が1つ。その順番もランダム
5、問題集と解答集をそれぞれのtextファイルに書き出す
使用したモジュール
randam
問題や選択肢をランダムに並び替えるために使用します。
本題
はじめに、前回取得したデータを整理します。
と言っても、ぼく自身python初心者でして、手探りです。したがって、申し訳ありません。ところどころ、強硬手段をとっています(笑)。
ここでは、前回抽出したデータを辞書型というものに整形したいと思います。
現在は、以下のような状態です。
そこで、次のように置き換えます。
僕がとった方法としては、「[」と「]」また「:」を空に置き換えて、「,」を「 」に置き換えました。それ以外、上手い方法が分かりませんでした。
そして、英単語の部分で、熟語として、「deal with」のような熟語には、前置詞の前に「ー」を入れることで、空から置き換えました。
まさに荒業です。
あとは、次のサイトのコードを参考にしました。
https://teratail.com/questions/108474
まず、encoding="utf-8"と指定しないと、windowsの場合、エラーが出ます。
また、辞書型にしたいのは、en(english)とjp(japanese)の部分です。numと書かれた要素はありませんので、削除します。
そして、それに伴い、 my_dict[en] = jpとしなければなりません。
そして、出来上がった辞書型のデータを利用して、問題集と解答集を作成します。
コードは、『退屈なことはpythonにやらせよう』の第8章を写経しました。
写経と言っても、こちらもところどころ書き換えなければなりませんが。
1点目は、windowsの場合encoding="utf-8"をopen()に追記する必要があります。
2点目は、上記では辞書型として出力しています。しかし、僕は、一度、テキストファイルに書き込みました。そのため、パスでつなげなければなりません(別にコピペして、『退屈なことはpythonにやらせよう』のサンプルコードに入れるというのもありだと思います)。
3点目は、ヘッダーの部分 や問題文と選択肢を問題ファイルに書き込む際に、ところどころコードを追記しました。
おそらく著作権に引っかかるので、コードは載せられません。
おわりに
最初、僕は一からコードを書いて問題集を作ろうとしていました。
しかし、randomモジュールを使ったサンプル例が『退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング』に載っていたので、時短のためそちらを流用しました。
先人の知恵って素晴らしいですね。
参考文献
randomモジュールを使った問題集のつくり方は、以下の書籍から参考にしました。
辞書型に変更するためのプログラムは、以下のサイトを参考にしました。