在python中生成字母数字字符串

时间:2015-08-24 06:11:23

标签: python django

我正在关注此SO answer,因为我需要逐个生成顺序字符串。我以django形式使用它,所以我需要它增加。但是,我无法让它发挥作用。我所得到的每一次刷新都是AAAA00000。

这是代码:

from string import ascii_uppercase

def _format(value, lettercount=5, digitcount=5):
    upper, lower = divmod(value, 10 ** digitcount)
    letters = []
    for i in range(lettercount):
        upper, val = divmod(upper, 26)
        letters.insert(0, ascii_uppercase[val])
    return '%s%0*i' % (''.join(letters), digitcount, lower)

def lettercounter(lettercount=5, digitcount=5):
    for i in range((26 ** lettercount) * (10 ** digitcount)):
        yield  _format(i, lettercount, digitcount)

然后在我看来:

#this is when the page loads.
addcodegenerate = codegenerate(initial={'id_gen': lettercounter()})

并且我的文本字段中显示的值为:

<generator object lettercounter at 0x038E4AA8>

每次加载页面时0x0 ...部分都会改变,所以我假设我得到一个不同的值,但这是我得到的输出。

我也在一个单独的.py文件中尝试过,我也没有得到任何输出。

每次加载页面时都应该递增..就像AAAAA00000,AAAAA00001 ....

1 个答案:

答案 0 :(得分:0)

每次调用视图时,您都在创建一个新的生成器。您需要创建一次生成器,然后在视图中引用它。例如:

# Outside the view
incrementing_letters = letter_counter

# Inside the view
addcodegenerate = codegenerate(initial={'id_gen': incrementing_letters})