特定の形式のランダムなテキスト文字列を生成する必要があります。Pythonでコーディングできるようにいくつかのアイデアが欲しいです。形式は<8桁の数字><15文字の文字列>です。
Vijay Dev
質問する
48915 次
5 に答える
60
#!/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:]のようになります。
于 2008-12-15T06:19:22.450 に答える
17
例を参照してください-レシピ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'
>>>
于 2008-12-15T06:18:07.740 に答える
12
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))
于 2013-01-07T11:56:05.980 に答える