如何用Python的方式随机选择字符?

4 投票
3 回答
26764 浏览
提问于 2025-04-17 15:37

我想在Python中生成一个长度为10的字母数字字符串。这里是我从一个字母数字字符列表中随机选择索引的部分代码。

我的计划

set_list = ['a','b','c' ........] # all the way till I finish [a-zA-Z0-9]

index = random()    # will use python's random generator
some_char = setlist[index]

有没有更好的方法来随机选择一个字符呢?

3 个回答

2

random() 这个东西本身并不是一个独立的函数。在 Python 3 中,通常的写法是:

import random
import string

random.choice(string.ascii_letters + string.digits)

string.letters 是根据地区来决定的,而且在 Python 3 中已经被去掉了。

4

试试这个:

def getCode(length = 10, char = string.ascii_uppercase +
                          string.digits +           
                          string.ascii_lowercase ):
    return ''.join(random.choice( char) for x in range(length))

运行:

>>> import random
>>> import string 
>>> getCode()
'1RZLCRBBm5'
>>> getCode(5, "mychars")
'ahssh'

如果你有一个列表,你可以这样做:

>>> set_list = ['a','b','c','d']
>>> getCode(2, ''.join(set_list))
'da'

如果你想使用特殊符号,可以使用字符串的标点符号:

>>> print string.punctuation
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
14

通常的方法是使用 random.choice()

>>> import string
>>> import random
>>> random.choice(string.ascii_letters + string.digits)
'v'

撰写回答