生成几个字符的随机字符串

时间:2014-02-10 00:47:35

标签: python string random

我想用Python生成独特的随机字符串,所以我正在利用uuid4

from uuid import uuid4

def generate_random_string():
    return uuid4().hex

问题是它生成的字符串太多了。我想出的一个可能的解决方案是将字符串从基数16转换为基数62(数字+小写/大写字母)。它可以工作,但结果仍然有太多的字符(22更准确)。 6到10个字符之间的东西会很棒,但我担心它们将来某些时候可能不是唯一的。有没有办法克服这个问题?

1 个答案:

答案 0 :(得分:1)

这可以控制生成的字符串的长度,但是,如评论中提到的@Keven,如果您希望将来发生碰撞的可能性更小,则需要使用更多字符。虽然看起来不太可能。

from random import sample
from string import digits, ascii_letters 

chars = digits + ascii_letters
#'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

gen_str = sample(chars, 10)

示例输出:

['2', '8', 'G', 'o', 'U', 'e', 'K', 'f', 'w', '7']

>>> ''.join(gen_str)

'28GoUeKfw7'

有关random module的信息