生成随机数字和空格的随机字符串

时间:2015-02-20 00:16:23

标签: python

我编写了一个返回长度为n的随机字符串的函数。

import string, random
def randomString(N):
    return ''.join(random.sample(string.ascii_lowercase + ' ', N))

但是,这只会返回一个字符串,其中包含每个字母/空格之一。我需要一个随机数字小写字母和空格的字符串(字符可以重复)。

我尝试在.join方法中添加另一个参数,并返回语法错误。

如何更改此功能以产生随机数量的字母和空格?

3 个答案:

答案 0 :(得分:2)

您正在寻找random.choice

import string, random
def randomString(N):
    return ''.join(random.choice(string.ascii_lowercase + ' ') for i in range(N))

答案 1 :(得分:1)

from random import choice
from string import ascii_lowercase

# vary the number of spaces appended to adjust the probability
chars = ascii_lowercase + " " * 10

def random_string(n):
    return "".join(choice(chars) for _ in range(n))

然后

>>> print(random_string(15))
fhr qhay nuf u 

与空格数一样,您可以调整每个字符出现的次数以更改其相对概率:

chars = (
    '                                                !,,,,,--....'
    '.....:;aaaaaaaaaaaaaaaaaaaaabbbbbcccccccccdddddddddeeeeeeeee'
    'eeeeeeeeeeeeeeeeeeeefffffggggghhhhhhhhhiiiiiiiiiiiiiiiiiiijj'
    'klllllllllmmmmmmnnnnnnnnnnnnnnnnnnooooooooooooooooppppppwrrr'
    'rrrrrrrrrrrrrssssssssssssssssttttttttttttttttttttuuuuuuuvvvw'
    'wwxyyyyz'
)

for _ in range(5):
    print(random_string(30))

给出

sxh ehredi clo-ioodmttlpoir.wo
ijr thc -o,iepe.pcicfrn.osui.a
 et rtl teektet rrecyd.d .bate
aji ueava hahe arv tgnrnt eecs
a ne:tudsdu,nlnhbeirp,oioitt e

答案 2 :(得分:0)

您可以通过一个简单的循环轻松完成此操作,使用random.choice而不是random.sample一次完成所有操作:

>>> import string, random
>>> def random_string(n):
...   count = 0
...   s = ''
...   while count < n:
...     s += random.choice(string.ascii_lowercase + ' ')
...     count += 1
...   return s
... 
>>> random_string(27)
'amwq frutj nq dbotgllrbmhnj'
>>> random_string(27)
'khjnmhvgzycqm vyjqcttybuqm '
>>> random_string(27)
'ssakcpeesfe kton gigblmgo o'