[Python] ランダム文字列を「ramdom」と「string」ライブラリを使用して生成
Pythonで「ランダム文字列 」生成する方法を紹介します。
ランダム数値 は「ramdom 」ライブラリを利用すれば簡単に作成できますが、
ランダム文字列 の場合は「random」ライブラリと「string 」ライブラリを利用して生成します。
ランダム文字列を生成
ランダム文字列を使用するために、「a~z 、A~Z 」、「0~9 」の文字定数 を用意し、
文字定数内の文字を1つずつランダムで選んであげること でランダム文字列が生成されます。
「az、AZ」、「0~9」の文字定数を用意するのが「string 」ライブラリで、
ランダムに選んであげるために「random 」ライブラリを使用します。
下のサンプルでは10文字のランダム文字列が生成されます。
import random
import string
''.join(random.choice(string.ascii_letters + string.digits) for i in range(10))
「string.ascii_letters 」は「abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 」が格納されており、
「string.digits 」は「0123456789 」が格納されております。
作成した文字列定数を「random.choice 」で1文字ずつ取得してはリスト内包表記でjoin させます。
サンプル:パスワードの長さを指定してランダム文字列を生成
文字列の長さを指定するとランダムで文字列を生成してくれる プログラムになります。
import random
import string
if __name__ == '__main__':
symbolLetters = ' !#$%&()*+,-./:;<=>?@[]^_`{|}~'
passsphraseLength = input('Input passprase lingth (lingth >= 8) : ')
if passsphraseLength.isdigit() == False:
print('Input is "' + passsphraseLength + '"')
print('Please input digit.')
exit(1)
if int(passsphraseLength) < 8:
print('Passphrase length is not long enough. Length is '+ passsphraseLength)
exit(2)
elif int(passsphraseLength) > 100:
print('Passphrase length is too long. Length is '+ passsphraseLength)
exit(2)
passphraseRamdom = ''.join(random.choice(string.ascii_letters + string.digits + symbolLetters) \
for i in range(int(passsphraseLength)))
print('Passphrase is "' + passphraseRamdom + '" (ramdon)"')
5行目で記号文字 を「symbolLetters 」変数で指定します。
Input passprase lingth (lingth >= 8) : 10
Passphrase is "(,2pO?JutV" (ramdon)"
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミングposted with ヨメレバ
Al Sweigart オライリージャパン 2017-06-03

