stringの文字列定数とランダム文字列作り方

Python,プログラミング

概要

  • Pythonのstringモジュールで使用可能な文字列定数を紹介します。また、stringモジュールの文字列定数を応用したランダム文字列作り方についてもご説明します。

 

stringモジュールの文字列定数

  • 以下、stringモジュールで使用可能な文字列定数です。
  • string.ascii_letters
    • 後述の ascii_lowercase と ascii_uppercase を組み合わせたもの。
  • string.ascii_lowercase
    • 小文字の 'abcdefghijklmnopqrstuvwxyz’ 。
  • string.ascii_uppercase
    • 大文字の 'ABCDEFGHIJKLMNOPQRSTUVWXYZ’ 。
  • string.digits
    • 文字列の '0123456789’ です。
  • string.hexdigits
    • 文字列の '0123456789abcdefABCDEF’ です。
  • string.octdigits
    • 文字列の '01234567’ です。
  • string.punctuation
    • CロケールのASCII 句読点文字 ' !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~’ です。
  • string.printable
    • 印刷可能な ASCII 文字(digits, ascii_letters, punctuation および whitespace) を組み合わせたもの。
  • string.whitespace
    • 空白 (whitespace) として扱われる ASCII 文字。スペース (space)、タブ (tab)、改行 (linefeed)、復帰 (return)、改頁 (formfeed)、垂直タブ (vertical tab) です。

 

  • 以下、Pythonターミナルでの実行結果です。
>>> import string
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.whitespace
' \t\n\r\x0b\x0c'

 

stringモジュールを応用したランダム文字列作り方

  • 文字列定数を応用して、数字,小文字,大文字,記号を組み合わせたランダム文字列(25文字) を作ります。range() の引数を変更頂ければ、任意の文字数が作成できます。
import string
import random

str = string.digits + string.ascii_letters + string.punctuation
randomtext = ''.join([random.choice(str) for i in range(25)])

print(randomtext)

 

 参考資料