特定の形式のランダムなテキスト文字列を生成する必要があります。 Pythonでコーディングできるようにいくつかのアイデアが欲しいです。形式は<8桁の数字> <15文字の文字列>です。
#!/usr/bin/python
import random
import string
digits = "".join( [random.choice(string.digits) for i in xrange(8)] )
chars = "".join( [random.choice(string.letters) for i in xrange(15)] )
print digits + chars
編集:randint()よりもrandom.choiceを使用するというアイデアが気に入ったので、それを反映するようにコードを更新しました。
注:これは、小文字と大文字が必要であることを前提としています。小文字のみの場合は、2番目のリスト内包表記を次のように変更します。
chars = "".join( [random.choice(string.letters[:26]) for i in xrange(15)] )
明らかに大文字の場合のみ、それを裏返すことができるので、スライスは[26:]のようになります。
例を参照してください- レシピ59873:ランダムパスワード生成 。
レシピに基づいて、ここにあなたの質問に対する解決策があります:
from random import choice
import string
def GenPasswd2(length=8, chars=string.letters + string.digits):
return ''.join([choice(chars) for i in range(length)])
>>> GenPasswd2(8,string.digits) + GenPasswd2(15,string.ascii_letters)
'28605495YHlCJfMKpRPGyAw'
>>>
_random.sample
_は別の選択肢です。 python.orgドキュメント に見られるように、違いは_random.sample
_サンプルが置き換えられていないことです。したがって、random.sample(string.letters, 53)
はValueError
になります。次に、8桁と15文字のランダムな文字列を生成する場合は、次のように記述します。
_import random, string
digits = ''.join(random.sample(string.digits, 8))
chars = ''.join(random.sample(string.letters, 15))
_
より単純なバージョンは次のとおりです。
import random
import string
digits = "".join( [random.choice(string.digits+string.letters) for i in xrange(10)] )
print digits