速さこそ正義

調べたことを書いていきます。

pythonでランダムな英単語を取得したい

pythonで意味のあるランダムな単語が複数必要になった。

意味のない単語であればランダムに文字を並べればできるが、 意味のある単語はそうはいかない。

初めはネットからスクレイピングして都度持って来ればいいかなと思ったけど、スマートじゃない。

なんかいい方法ないかなと考えたら、思いついた。

linuxの辞書ファイルを利用する

linuxには辞書ファイルがあるので、そこからランダムに単語を抽出すれば良さそう。

Macの場合、辞書ファイルは以下にある

/usr/share/dict/words
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random

#辞書ファイルを読み込ませる
f =open ('/usr/share/dict/words','r')
lines=f.readlines()
f.close()

for i in range(35):
    #単語の最後に改行が入ってしまうので、replaceで置換
    input_word= lines[random.randint(1,len(lines)-1)].replace('¥r','')
    print(input_word)

f:id:cyamax:20170204111040p:plain

linuxでパスワードを変更するときに、 「辞書にあるからこのパスワードは使えませんよ」と注意されるときがありますが、 どうやらこのファイルと比較して見ているらしい。

単語数も23万5886単語もあるようなのでとりあえずこれで大丈夫。

ただ、pythonのモジュールとか使ったらもっと良い方法はありそう。