首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中生成一个固定长度的随机字符串列表。

在python中生成一个固定长度的随机字符串列表。
EN

Stack Overflow用户
提问于 2015-12-27 21:24:37
回答 4查看 11K关注 0票数 5

我需要生成一个具有固定长度的随机字母数字字符串的列表。它会是这样的:list = ['ag5','5b9','c85'],我可以用随机数来生成列表,但是我无法计算出字符串,它同时包含数字,letters.The列表将有固定的长度(比如100项)。我正在使用python 3。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-12-27 21:31:56

要获得一组字母数字字符,可以从string模块中组合常量。然后,可以在列表理解中使用random.choice()生成列表:

代码语言:javascript
运行
复制
from random import choice
from string import ascii_lowercase, digits

chars = ascii_lowercase + digits
lst = [''.join(choice(chars) for _ in range(2)) for _ in range(100)]
print(lst)
票数 9
EN

Stack Overflow用户

发布于 2015-12-27 22:18:51

因为你需要每一个字符串都有一个字母和一个数字,所以我们需要比平时做更多的工作。我们既可以继续生成随机词,只接受满足约束条件的词,也可以通过构造构建满足约束条件的字符集合。

代码语言:javascript
运行
复制
from random import choice, shuffle
from string import digits, ascii_lowercase

def gen_word(N, min_N_digits, min_N_lower):
    choose_from = [digits]*min_N_dig + [ascii_lowercase]*min_N_low
    choose_from.extend([digits + ascii_lowercase] * (N-min_N_low-min_N_dig))
    chars = [choice(bet) for bet in choose_from]
    shuffle(chars)
    return ''.join(chars)

def gen_word_rejection(N, min_N_digits, min_N_lower):
    bet = digits + ascii_lowercase
    while True:
        word = ''.join([choice(bet) for i in range(N)])
        if (sum(c.isdigit() for c in word) >= min_N_digits and
            sum(c.islower() for c in word) >= min_N_lower):
            return word

这给了我

代码语言:javascript
运行
复制
>>> [gen_word(3, 1, 1) for i in range(5)]
['mb6', 'g4b', 'y5g', '28p', 'ki2']
>>> [gen_word_rejection(3, 1, 1) for i in range(5)]
['y37', 'dr0', 'w1z', 'h2a', 'i6r']

所有这些都至少有一个数字和至少一个小写字母。

票数 0
EN

Stack Overflow用户

发布于 2015-12-27 21:32:10

如果您想要的话,我会推荐最小长度为3的hashids和定制的盐类:

代码语言:javascript
运行
复制
codes = [hasher.encode(i) for i in range(100)] # assuming hasher = hashids.Hashids('', 3)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34484972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档