2

Pythonを使用して文字セットを定義し、文字セット内にある可能性のあるすべての文字列を生成しようとしています。

私は最初に文字セットを変数として設定し、次にforループを使用して次のような可能な文字列を生成することを考えていました。

charSet = [a-zA-Z0-9]
for a in charSet:
      print (a)
for b in charSet:
      print (b)

しかし、私はこのエラーメッセージを受け取り続けますUnboundLocalError:ローカル変数'a'は割り当ての前に参照されました

誰かアイデアはありますか?

4

2 に答える 2

2

探しているものに似た組み込みの構文はありませんが、必要な文字を含む事前定義された文字列がいくつかあります。

import string
charSet = string.ascii_letters + string.digits

より一般的な解決策として、この関数を試すことができます。

def getCharactersFromCharSet(charSet):
    import re
    chars = []
    for c in re.findall('.-.|.', charSet):
        if len(c) == 1:
            chars.append(c)
        else:
            for i in range(ord(c[0]), ord(c[2]) + 1):
                chars.append(chr(i))
    return ''.join(chars)

print getCharactersFromCharSet('a-zA-Z0-9')
于 2012-11-14T14:30:49.733 に答える
2

charSet定義の問題が解決したら、itertools.productを見てください。

from itertools import product
import string

charSet = string.ascii_letters + string.digits
for wordchars in product(charSet, repeat=4):
    print ''.join(wordchars)
于 2012-11-14T14:35:35.363 に答える