随分前から、@calle4326という英単語を自動ツイートするbotを運営していますが、ツイートする単語は結局手入力なので手間がかかります。
どうせなら自動化が得意なpythonでできる限り効率化してみたいので、とりあえず英単語、日本語の意味の二つの情報を含んだエクセルファイルを作成してみました。
ファイル名をwords.xlsxとしておきます。
目次
モジュールのインポート
今回は、エクセルからデータフレーム(リスト)を作成するためにopenpyxlモジュールを使用します。
また、ランダムな整数を生成してデータフレームから単語を呼び出すためにrandomモジュールもインポートしておきます。
import openpyxl
import randomセルの取得
以下のようにして指定のセルの値を取得します。
今回は、A,B行のみ使用しているのでシンプルになります。
book = openpyxl.load_workbook('words.xlsx')
active_sheet = book.active
english = [active_sheet.cell(column=1, row=i+1).value for i in range(active_sheet.max_row)]
japanese = [active_sheet.cell(column=2, row=i+1).value for i in range(active_sheet.max_row)]これで、2つのリスト型変数にそれぞれ英単語とその意味を格納することができました。
ランダム整数の生成
今回は作成したリスト型変数からインデックスを使用して値を取り出すため、任意の範囲(列の長さ)の整数を5個ずつ生成して単語と意味のペアを取り出してみます。
rand_list = random.sample(range(100,int(active_sheet.max_row), 1), k=5)
print('------------------------------------------------')
for i in rand_list:
print(english[I]+' '+japanese[i])
print('------------------------------------------------')以上で、エクセルにあらかじめ用意しておいた英単語とその意味のペアをランダムに5個ずつ取り出すことができました。
あとはこの文字列をbotに自動で登録もしくは、botを経由してツイートするようにすれば、自動英単語botの効率化は完了です。
バッチ処理を組み合わせれば、サーバーを使用せず、ノートパソコン単体でbotを管理できるかもしれませんね。

