web-dev-qa-db-ja.com

特定のパターンのランダムなテキスト文字列を生成する

特定の形式のランダムなテキスト文字列を生成する必要があります。 Pythonでコーディングできるようにいくつかのアイデアが欲しいです。形式は<8桁の数字> <15文字の文字列>です。

22
Vijay Dev
#!/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:]のようになります。

55
Jay

例を参照してください- レシピ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'
>>> 
16
gimel

_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))
_
9
Devi

より単純なバージョンは次のとおりです。

import random
import string

digits = "".join( [random.choice(string.digits+string.letters) for i in   xrange(10)] )
print digits
1
jithin