注目キーワード

【Python】ランダムな文字列の生成方法

Webシステムの「 初期パスワードの生成 」とかで使おうと思って調べたのでアウトプットします。

これって結構、需要ありそうなのにモジュールがなかったので関数を作ってみました。

この記事では、ランダムな文字列を生成する関数を作るにあたって必要なモジュールの紹介と実装したサンプルソースを紹介しています。

対象レベル

Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。

詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。

サンプルソースを読むうえで理解しておきたいこと

基本的にこの章の内容は読み飛ばしてOKです。サンプルソースでわからないところがあれば参照してみてください。

ランダムな文字列を生成する関数

サンプルソース

実行結果

プログラムを実行した結果が以下になります。1回の実行で10文字のランダムな文字列を5回生成します。下のキャプチャでは、「 sample_random_string.py 」を2回実行しています。

sample_random_string.py実行結果

プログラムの解説

処理の大まかな解説として、11行目、12行目では「for文」を使って、下の「 random_string 」関数を呼び出しています。

「 random_string 」関数の仕様は指定した文字数のランダムな文字列を生成します。サンプルプログラムでは引数に「10」を指定してるので、10文字のランダムな文字数が生成されます。

それでは、具体的な関数内部の処理を見ていきます。

def random_string(num): random_list = [random.choice(string.ascii_letters + string.digits) for i in range(num)] return ''.join(random_list)

まず初めに、「random.choice」を使うために「random」モジュールをインポートします。

その次に「 アルファベットと数字 」の定数を使うために「string」モジュールをインポートしておきます。

import randomimport string

7行目では「random.choice」を使って「アルファベットと数字」の中からランダムに1文字抽出する処理を引数の回数分行い配列として取得します。

スポンサーリンク

 random_list = [random.choice(string.ascii_letters + string.digits) for i in range(num)]

8行目では、「join」関数を使って、配列を結合し文字列を取得します。

その文字列を「 random_string 」の戻り値として返します。

 return ''.join(random_list)

まとめ

ランダムな文字列を生成するためには以下の手順でプログラムを実装する。

  • 「random.choice」 を使って「 アルファベット・数字 」から無作為に1文字選ぶことを繰り返し配列を作成する。
  • 「join」関数を使って配列を1つの文字列に変換する。