【Python】初心者が Pythonで英単語帳を作ってみた〜検索・保存編〜

こんにちは!

皆さんは英語の勉強をしていますか?

僕は、海外のドラマを英語字幕で見ることで、英語の勉強をすることがよくあります。
しかし海外のドラマを見ていると、わからない単語がいっぱい出てきます。

Python初心者
海外ドラマの英単語って難しい・・・

最初はわからない単語を調べてノートにメモをしていたのですが、面倒くさがり屋の僕には長くは続きませんでした・・・

そこで、簡単にわからない単語を調べてメモをすることができる英単語帳プログラムをPythonで作ってみました!

先パイ
自分で欲しいものを作るのはいいことじゃな

まだまだ改良途中なので、やろうと思っていることはたくさんありますが、現段階でのプログラムを紹介していきたいと思います。

現段階での大まかな仕様

現段階での大まかな仕様を紹介します。

  • 調べたい単語を入力する
  • 英単語は「webio 英和辞典・和英辞典」様からスクレイピングにより取得する
  • 英単語はcsvファイルに保存する
  • 単語を保存するかどうか選べる
  • すでにcsvファイルに保存されている単語は、単語の意味を見る前に確認する

それぞれの仕様について説明していきます。

調べたい単語を入力する

調べたい単語をキーボードで入力すると、英単語の意味を見ることができるようにします。

この時、存在しない単語では、例外処理によりエラーが出るようにします。

例外処理は、以下の記事を参考にしてください。

あわせて読みたい

こんにちは! 皆さんは、プログラムを書くときにきちんと例外処理を書いていますか? 例外とは、プログラム実行時に出るエラーのことで、例外処理は、その例外発生時にプログラムを止めずに実行する処理になります。 例外処理を行わな[…]

例外処理

英単語は「webio 英和辞典・和英辞典」様からスクレイピングにより取得する

英単語帳を作成する際には、自分で単語の意味を調べて、単語とその単語の意味を入力して保存するというのが一般的かもしれません。

ですがこれは僕にとっては面倒です笑

そこでPythonの強みであるスクレイピングを生かしてwebから英単語の意味をとってくるようにします。

具体的には、「webio 英和辞典・和英辞典」様で単語を検索した際の、主な意味の部分から意味を取得します。

スクレイピングに関する記事は後々書きたいと思っていますが、まだ手が届いていません。

英単語はcsvファイルに保存する

英単語はcsvファイルに保存していきます。

csvファイルへの保存方法は以下の記事を参考にしてください。

あわせて読みたい

こんにちは! 皆さんはCSVファイルからデータを読み込んだり、 CSVファイルへデータを書き込みたいと思ったことはありますか? CSVファイルはエクセルなどでも開くことができたり、よく使われているデータ形式なので、プログラミン[…]

csv

単語を保存するかどうか選べる

単語を調べた時に、「あ、この単語知ってた」ということは多々ありますよね。

そこで自分で単語を保存するかどうかを選べるようにしています。

すでに覚えているような簡単な単語は保存する必要がありませんね。

すでにcsvファイルに保存されている単語は、単語の意味を見る前に確認する

すでにcsvファイルに保存されている単語は、以前に自分が調べた単語です。

以前調べた単語であれば、思い出すことができるかもしれません。

そこで、単語の意味をすぐに確認するのではなく、一旦意味を考えてから確認できるようにしています。

作成した英単語帳のプログラム

以下のプログラムは、前項で紹介した仕様に沿った英単語帳のプログラムです。

import requests
from bs4 import BeautifulSoup
import csv
import sys

#検索する単語を入力
word = input("search word:")

#単語が保存されているリストファイルを開く
try:
    with open('list.csv') as f:
        reader = csv.reader(f)
        l = [row for row in reader]

except:
    print("Listfile doesn't exist")
    exit(1)

#すでに保存されている単語かどうかチェック
for exist_word in l:
    if exist_word[0] == word:
        exist_word_verif = input("This word is already registered. Check mean? y/n:")
        if exist_word_verif == "n":
            sys.exit(0)
        elif exist_word_verif == "y":
            print(exist_word[1])
            sys.exit(0)
        else:
            print("Please input y or n. Start again.")
            sys.exit(1)

#urlを検索・スクレイピング
search_word = "https://ejje.weblio.jp/content/" + word

try:
    url = requests.get(search_word)
    soup = BeautifulSoup(url.text, "html.parser")
    word_mean = soup.find(class_='content-explanation ej').get_text()

except:
    print("This word doesn't exist. Start again.")
    exit(1)

#単語の意味を表示
print(word_mean)

#リストファイルに追加するかどうか選択
append_or_not = input("append y/n:")

if append_or_not == "y":
    data = [word, word_mean]
    with open('list.csv', 'a') as f:
        writer = csv.writer(f, lineterminator='\n')
        writer.writerow(data)

モジュールは、スクレイピングのために「requests」「Beautifulsoup」、csvファイルに保存するために「csv」、プログラムを終了させるために「sys」を使用しました。

それほど難しいプログラムではないので、プログラムを見ればどのような動作をしているかわかると思います。

今後の予定

今後も使いやすいように改良を重ねていきたいと思います。

改良する点は、

・無限ループ処理に変更
 →いちいち単語を1つ調べるごとに実行するのは面倒だから

・日本語から英語に対応
 →英会話等の勉強の際に使用できるようにするため

・保存されている単語の出題
 →単語の意味を記憶・確認するため

・TkinterなどによるGUIアプリケーション化
 →より使いやすいようにするため

などを考えています。改良次第また記事にしたいと思います。


〜追記〜

【Python】初心者が Pythonで英単語帳を作ってみた 〜出題編〜を公開しました。

まとめ

今回の記事では、Python初心者の自分が作成した英単語帳のプログラムを紹介しました。

まだまだプログラムが汚かったり、改善する点が多かったりと問題は多々ありますが、とりあえず作ってみることに意味があると思います。

Python初心者
自分で何か作るのは楽しいね!

皆さんも何か自分が欲しいと思ったものを作ってみてはどうでしょうか?

改善すべき点などをお教えいただけるなら、コメントやTwitterのDMで教えていただけたら嬉しいです!