生成一个随机长度为 12 的字符串,由大小写字母和数字组成

Generate a random length is 12 string that is comprised uppercase and lowercase alpha and numbers

如何创建 Python 算法来生成由唯一的大小写字母和数字组成的 12 字符字符串?

在我的情况下,它将用作唯一的 session/key 标识符,可能 在 500K+ 代中是唯一的。

例如:

837uNNM9abCb

9HFRHcop24Cd

谢谢!

这可以使用 while 循环和 Python 的 randomstring 库轻松实现。

代码:

import random
import string

def create():
    _string, counter = "", 0
    while counter < 12:
        choice = random.choice(string.ascii_letters + string.digits)
        if choice not in _string:
            _string += choice
            counter += 1
        else:
            pass
    return _string

print(create())

输出:

YWdTocQs0R4X

它在做什么:

  1. 正在创建变量 _stringcounter
  2. 开始一个 while 循环,在条件 counter < 12 变为假后中断。(这里有一个在 for 循环之上使用 while 循环的原因,我稍后会解释)
  3. 使用Python的随机库找到一个随机的number/letter(大写和小写)。
  4. 检查选项是否已在字符串中,如果不是,则将选项添加到字符串中。但如果是,则什么也不会发生,循环会重新开始(为什么我在 for 循环上使用 while 循环。
  5. Returns字符串!

注意:如果您对字符串中的重复项没问题,那么这个单行代码的工作效率会高得多。

print(''.join(random.choice(string.letters + string.digits) for _ in range(12)))