2

我试图使用 python 来定义一个字符集,然后生成所有可能的字符集中的字符串。

我正在考虑首先将字符集设置为变量,然后使用 for 循环生成可能的字符串,如下所示:

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

但我不断收到此错误消息 UnboundLocalError: local variable 'a' referenced before assignment

有什么想法吗?

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 回答