我想用Python生成独特的随机字符串,所以我正在利用uuid4。
from uuid import uuid4
def generate_random_string():
return uuid4().hex
问题是它生成的字符串太多了。我想出的一个可能的解决方案是将字符串从基数16转换为基数62(数字+小写/大写字母)。它可以工作,但结果仍然有太多的字符(22更准确)。 6到10个字符之间的东西会很棒,但我担心它们将来某些时候可能不是唯一的。有没有办法克服这个问题?
答案 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的信息