Python でランダムな文字列を生成する

Muhammad Waiz Khan 2023年1月30日
  1. Python で random.choice() および string.join() メソッドを使用してランダム文字列を生成する
  2. Python で uuid.uuid4() メソッドを使用してランダム文字列を生成する
  3. Python で StringGenerator.render_list() メソッドを使用してランダム文字列を生成する
Python でランダムな文字列を生成する

このチュートリアルでは、Python でランダムな文字列を生成するためのさまざまな方法を調べます。ランダムな文字列生成手法は、ランダムなユーザー名、パスワード、またはファイル名などを生成するために使用されます。

場合によっては、暗号で保護された文字列、つまりランダムなパスワードやキーの生成が必要になります。ランダムなユーザー名やファイル名などとしてランダムな文字列を使用する必要がある場合は、ランダムな文字列だけで十分です。このチュートリアルでは、以下で説明する両方のタイプのランダムな文字列の生成について説明します。

Python で random.choice() および string.join() メソッドを使用してランダム文字列を生成する

random.choice(seq) メソッドは、入力として提供されたシーケンス seq からランダムに選択された要素を返します。また、string.join(iterable) メソッドは、指定された string の値を区切り文字として使用して iterable の要素を結合し、結果の文字列を出力として返します。

Python でランダムな文字列を生成するには、コードでランダムな文字列を生成する文字のシーケンスを random.choice() メソッドに提供する必要があります。入力シーケンスは、大文字のアルファベット、小さいアルファベット、数字、句読点などで構成できます。

Python では、大文字と小文字のアルファベットシーケンスにそれぞれ string.ascii_uppercasestring.ascii_lowercase、両方に string.ascii_letters、数字シーケンスに string.digits、句読点シーケンスに string.punctuation を使用できます。

以下のサンプルコードは、Python で random.choice() および string.join() メソッドを使用して必要なタイプのランダム文字列を生成する方法を示しています。

import string
import random

number_of_strings = 5
length_of_string = 8
for x in range(number_of_strings):
    print(
        "".join(
            random.choice(string.ascii_letters + string.digits)
            for _ in range(length_of_string)
        )
    )

出力:

wOy5ezjl
j34JN8By
clA5SNZ6
D8K0eggH
6LjRuYsb

暗号で保護されたランダムな文字列を生成するには、オペレーティングシステムのソースから乱数を生成する random.SystemRandom() メソッドを使用できます。

コード例:

import string
import random

number_of_strings = 5
length_of_string = 8
for x in range(number_of_strings):
    print(
        "".join(
            random.SystemRandom().choice(string.ascii_letters + string.digits)
            for _ in range(length_of_string)
        )
    )

出力:

PEQBU72q
xuwUInGo
asVWVywB
SAsMRjka
CrbIpuR6

Python で uuid.uuid4() メソッドを使用してランダム文字列を生成する

uuid.uuid4() メソッドはランダムな UUID を生成して返します。UUID は、システムまたはネットワーク内の情報を識別するために使用される 128 ビット長のユニバーサル一意識別子です。

このメソッドは、ランダムな文字列からランダムで一意の識別子を生成する場合に役立ちます。以下のサンプルコードは、uuid.uuid4() メソッドを使用して Python でランダムな文字列を取得する方法を示しています。

import uuid

print(uuid.uuid4())

出力:

440a93fe-45d7-4ccc-a6ee-baf10ce7388a

Python で StringGenerator.render_list() メソッドを使用してランダム文字列を生成する

StringGenerator().render_list() は、Python で複数のランダムな文字列を生成する簡単な方法です。StringGenerator() は、正規表現を入力として受け取ります。これは、ランダムな文字列を生成するために使用する必要がある文字を定義します。renderlist(len, unique=) メソッドでは、len はランダムな文字列を含む出力リストの長さを指定し、一意の出力文字列が必要な場合は unique キーワード引数を True に設定できます。

このメソッドを使用するには、最初に StringGenerator モジュールをインストールする必要があります。以下のサンプルコードは、StringGenerator.render_list() メソッドを使用して Python でランダムな文字列を生成する方法を示しています。

from strgen import StringGenerator

StringGenerator("[\l\d]{10}").render_list(3, unique=True)

出力:

['m98xQHMlBI', 'V4O8hPMWfh', 'cBJk3XcGny']

関連記事 - Python String