らっちゃいブログ

日々の学びと気づきを発信するブログ

pythonでランダムな文字列を取得したい

スポンサーリンク

uuid 使えよ!というつっこみが聞こえてきそうです。

でも、10文字程度のお手軽に使えるランダム文字列がほしいときってありますよね。

アカウント登録する際にメール送信で使うキーとか、uuid 使う人ってあんまりいませんし。

というわけで、そんなときに使える random_string 関数を作ってみました。

import random

def random_string(length, seq='0123456789abcdefghijklmnopqrstuvwxyz'):
    sr = random.SystemRandom()
    return ''.join([sr.choice(seq) for i in xrange(length)])

実際に実行してみる。

>>> random_string(10)
'krz58li2iv'
>>> random_string(20)
'4eriz092ovu9tfv2hg78'

うんうん、いい感じですね。

ただちょっと、デフォルト引数のseqが汚いのが気になるので以下のように改善してみました。

import random
import string

def random_string(length, seq=string.digits + string.ascii_lowercase):
    sr = random.SystemRandom()
    return ''.join([sr.choice(seq) for i in xrange(length)])

定数ばんざい!

ランダム文字列に大文字アルファベットも含めたい、というあなたは string.ascii_lowercase の代わりに string.ascii_letters をご利用いただくとよさそうです。