如何在定义的字符集中生成所有可能的字符串?

时间:2012-11-14 14:26:05

标签: python

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

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

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

但我一直收到此错误消息 UnboundLocalError:赋值前引用的局部变量'a'

任何想法?

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分: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)