一時的にファイルを保存する時に適当なファイル名を作りたい時、意味のない文字列でパスワードを作りたい時など、ありませんか!?
そんな時に便利な、「ランダムな文字列」を組み立てる方法をご紹介したいと思います!(*´ω`*)
せっかくなので、Pythonらしく書いてみたいと思います!(`・ω・´)ゞ
ランダムな文字列の候補
まずは、ランダムに選ぶ文字の候補を定義します。Pythonでは「stringモジュール」を使うと便利です!a~zは「ascii_lowercase」、A~Zは「ascii_uppercase」、数字は「digits」で取得することができます!
import string c = string.ascii_lowercase + string.ascii_uppercase + string.digits print c # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
ランダムに選ぶ
Pythonでランダムといえば「randomモジュール」を使いますが、色々種類があります。今回は、「ランダムな文字列の候補」から適当に選びたいので「choice」を使いたいと思います。
import string import random c = string.ascii_lowercase + string.ascii_uppercase + string.digits print random.choice(c)
これで実行するたびに、ランダムな文字列の候補から適当に選ばれた1文字が表示されます。
リスト内表記で繰り返す
シンプルに「for文」で繰り返して文字列を組み立ててもいいのですが、折角Pythonなので「リスト内表記」を使って必要な文字数揃えたいと思います!
リスト内表記の基本文は、以下の通りです!
data = [counter for counter in iterator]
これに当てはめて書くと、以下のようになります(`・ω・´)ゞ
import string import random c = string.ascii_lowercase + string.ascii_uppercase + string.digits n = 10# ランダムな文字列の字数 print [random.choice(c) for i in range(n)]# 指定された回数繰り返す # ['N', 'x', 'R', '7', '1', 'K', 'B', 'i', 'V', 'c'] ←毎回結果が変わります
リスト内表記で記述すると、どうしてもlist型になってしまいます。これでは色々使いにくいので「join」を使って、リストの要素をつなげて文字列にします!
import string import random c = string.ascii_lowercase + string.ascii_uppercase + string.digits n = 10# ランダムな文字列の字数 print ''.join([random.choice(c) for i in range(n)])# 指定された回数繰り返して、joinで連結する # 1Vcvuir49S ←毎回結果が変わります
関数化
そんなに多用するものでもないと思いますが、折角なので関数にしてみたいと思います!欲しい文字数は引数で指定できるようにします。
import string import random def randomCharacter(n): c = string.ascii_lowercase + string.ascii_uppercase + string.digits return ''.join([random.choice(c) for i in range(n)])
実行してみると、好きな字数のランダム文字列が簡単に作れるようになります!(*´ω`*)b
print randomCharacter(10) # cJjCSiOosO ←毎回結果が変わります