如何生成随机字符串

时间:2016-06-07 09:19:31

标签: python python-3.x

我正在尝试编写一个生成随机字符串的代码,但我刚刚开始编码,所以我不希望代码太复杂。

import random, string
randomthing = random.choice(string)
print(randomthing(10))

但它一直说长度(len)没有定义。我该怎么办?

5 个答案:

答案 0 :(得分:14)

如果您想生成唯一字符串:

import uuid
print uuid.uuid4() # e3c8a1c3-9965-4356-9072-1002632a96e1
print uuid.uuid4().hex # e3c8a1c39965435690721002632a96e1

答案 1 :(得分:5)

string模块没有len你可能想尝试这个:

Python2:

rand_str = lambda n: ''.join([random.choice(string.lowercase) for i in xrange(n)])

# Now to generate a random string of length 10
s = rand_str(10)  

Python3:

rand_str = lambda n: ''.join([random.choice(string.ascii_lowercase) for i in xrange(n)])

# Now to generate a random string of length 10
s = rand_str(10)  

random.choice返回单个字符,使用join函数连接10个此类字符。

编辑

lambda n : ...创建一个lambda函数,以n为参数。

''.join(sequence)将序列连接到一个字符串中,它们之间有空字符串(''),即它只是将字符连接成单词。
例如'.'.join(['a','b','c'])将返回a.b.c

答案 2 :(得分:2)

这已在Random strings in Python中得到解答 从(例如)小写字符生成字符串:

import random, string

def randomword(length):
   return ''.join(random.choice(string.lowercase) for i in range(length))

结果:

>>> randomword(10)
'vxnxikmhdc'
>>> randomword(10)
'ytqhdohksy'

答案 3 :(得分:1)

每当我想到随机字符串时,它都会让我想起Lorem Ipsum。它存在loremipsum python package,你可以这样使用:

from loremipsum import get_sentences
sentences_list = get_sentences(5)

如果你不介意字符串中char的确切数量,那么生成看起来像句子的随机字符串可能是一个很好的解决方案。

答案 4 :(得分:1)

第1步:

使用random.randint(97,122)

生成介于97和122之间的随机数(包括两者)

第2步:

使用str(unichr(<random number>))

将随机数转换为字母

第3步:

将字符串附加到最终字符串

类似的东西:

randomString=""
for i in range(10):
    randomString += (str(unichr(random.randint(97,122)))) #intended to put tab space.
print randomString                                        #I'm new to Stackoverflow