首页 > 解决方案 > 需要有关随机字符串生成 python 的帮助

问题描述

我想要的是生成这种特定格式的字符串: l+l+l+d+d+d+d+l+d+l+l+l+l+d+d+d+d+l+d +l+l+l+l+d+d+d+d+l+d+l+l+l+l+d+d+d+d+l+d+l 每个 l 和 d 是不同的字符串或数字。问题是当我尝试生成时,整个事情是相同的值/字符串。但我想要它不同。这是一个例子: 我得到了什么: lll9999l9llll9999l9llll9999l9llll9999l9l 我需要什么: bfb7491w3anfr4530x2zzbg9891u2rbep8421m9s

def id_gen():
    l = random.choice(string.ascii_lowercase)
    d = random.choice(string.digits)
    id = l+l+l+d+d+d+d+l+d+l+l+l+l+d+d+d+d+l+d+l+l+l+l+d+d+d+d+l+d+l+l+l+l+d+d+d+d+l+d+l
    print(id)

结果:

lll9999l9llll9999l9llll9999l9llll9999l9l

我需要这个来产生不同的东西:)

标签: python

解决方案


这似乎对我有用:

def gen_id() :
    pattern = 'lllddddldllllddddldllllddddldllllddddldl'
    digits = [random.choice(string.digits) for i in range(len(pattern))]
    letters = [random.choice(string.ascii_lowercase) for i in range(len(pattern))]
    return ''.join( digits[i] if pattern[i] == 'd' else letters[i] for i in range(len(pattern)) )

测试:

>>> gen_id()
'lnx1066k0hnrd5409d1nhgo1254t6rzyw5165f8v'
>>> gen_id()
'sbc7119f4ythd8845i1afay1900f4wjcv0659b4e'
>>> gen_id()
'yan6228r0nebj5097y7jnwh7065s7osra0391j5f'
>>> 

看起来很不一样...拜托,别忘了import string, random=)


推荐阅读