Python ランダムな文字列を簡単に作る方法

スポンサーリンク

Pythonでは「random」を使ってランダムな文字列を作ることができます。

ある数値の範囲内で乱数を取得したり、整数・小数なども指定して乱数を作ることができます。

今回は、Pythonでランダムな文字列を作る「random」の使い方を解説します。

ランダムな文字列を作る

ランダムな文字列を作る関数

import random
import string

def GetRandomStr(num):
    # 英数字をすべて取得
    dat = string.digits + string.ascii_lowercase + string.ascii_uppercase

    # 英数字からランダムに取得
    return ''.join([random.choice(dat) for i in range(num)])
GetRandomStr(10)
#[結果] x6Dq9RMFy6

ここではランダムな文字列を作る関数「GetRandomStr」を定義しました。

パラメータは桁数です。「GetRandomStr(10)」とすると、10桁のランダムな文字列を取得できます。

 

解説1. 英数字を取得

import string

# 英数字をすべて取得
dat = string.digits + string.ascii_lowercase + string.ascii_uppercase
print(dat)
#[結果] 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

「string.digits」は数字、「string.ascii_lowercase」は英字小文字、「string.ascii_uppercase」は英字大文字を取得します。

これをすべて結合して「dat」という文字列を作りました。

 

解説2. ランダム文字列を1文字取得

import random
import string

# 英数字をすべて取得
dat = string.digits + string.ascii_lowercase + string.ascii_uppercase

# 英数字からランダムに1文字取得
random.choice(dat)
#[結果] f

「random.choice」で「dat」からランダムに文字列を1文字取得しました。1文字だけでは使えないので、任意の文字数のランダム文字列を取得できるように修正します。

解説3. ランダム文字列を指定文字数だけ取得

import random
import string

# 英数字をすべて取得
dat = string.digits + string.ascii_lowercase + string.ascii_uppercase

# 英数字からランダムに10文字取得
''.join([random.choice(dat) for i in range(10)])
#[結果] PpnUw7uiV1

「”.join」でリストの配列をすべて結合します。リストは「range(10)」で配列10になるようにしました。ここを可変にしたものが最初に作った関数「GetRandomStr」です。

参照https://docs.python.jp/3/library/random.html

これで「random」を使って任意の桁数のランダムな文字列を作ることができました。

以上、Pythonでランダムな文字列を作る「random」の使い方でした。

コメント