Python中的随机字符串

时间:2010-01-08 19:15:47

标签: python

如何在Python中创建随机字符串?

我需要它才能成为数字然后重复字符,直到你完成这是我创建的

def random_id(length):
    number = '0123456789'
    alpha = 'abcdefghijklmnopqrstuvwxyz'
    id = ''
    for i in range(0,length,2):
        id += random.choice(number)
        id += random.choice(alpha)
    return id

13 个答案:

答案 0 :(得分:209)

从(例如)小写字符生成字符串:

import random, string

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

结果:

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

答案 1 :(得分:49)

由于这个问题是公平的,呃,随机,这可能适合你:

>>> import uuid
>>> print uuid.uuid4()
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17

答案 2 :(得分:31)

>>> import random
>>> import string
>>> s=string.lowercase+string.digits
>>> ''.join(random.sample(s,10))
'jw72qidagk

答案 3 :(得分:15)

回答原来的问题:

os.urandom(n)

引自:http://docs.python.org/2/library/os.html

  

返回一串适合加密使用的n个随机字节。

     

此函数从特定于OS的随机性返回随机字节   资源。返回的数据应该是不可预测的   加密应用程序,虽然它的确切质量取决于操作系统   实现。在类UNIX系统上,这将查询/ dev / urandom,   在Windows上,它将使用CryptGenRandom。如果是随机源   未找到,将引发NotImplementedError。

     

为所提供的随机数生成器提供易于使用的界面   通过您的平台,请参阅random.SystemRandom。

答案 4 :(得分:5)

您可以构建随机的ascii字符,如:

import random
print chr(random.randint(0,255))

然后建立一个更长的字符串,如:

len = 50
print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )

答案 5 :(得分:5)

你还没有真正说过你需要什么样的随机字符串。但无论如何,您应该查看random模块。

下面粘贴了一个非常简单的解决方案。

import random

def randstring(length=10):
    valid_letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return ''.join((random.choice(valid_letters) for i in xrange(length)))

print randstring()
print randstring(20)

答案 6 :(得分:2)

random_name = lambda length: ''.join(random.sample(string.letters, length))

长度必须为< = len(string.letters)= 53。 结果示例

   >>> [random_name(x) for x in range(1,20)]
['V', 'Rq', 'YtL', 'AmUF', 'loFdS', 'eNpRFy', 'iWFGtDz', 'ZTNgCvLA', 'fjUDXJvMP', 'EBrPcYKUvZ', 'GmxPKCnbfih', 'nSiNmCRktdWZ', 'VWKSsGwlBeXUr', 'i
stIFGTUlZqnav', 'bqfwgBhyTJMUEzF', 'VLXlPiQnhptZyoHq', 'BXWATvwLCUcVesFfk', 'jLngHmTBtoOSsQlezV', 'JOUhklIwDBMFzrTCPub']
>>> 

享受。 ;)

答案 7 :(得分:1)

有时候,我想要的是半发音,半记忆的随机字符串。

import random

def randomWord(length=5):
    consonants="bcdfghjklmnpqrstvwxyz"
    vowels="aeiou"

    return "".join(random.choice((consonants,vowels)[i%2]) for i in range(length))

然后

>>> randomWord()
nibit
>>> randomWord()
piber
>>> randomWord(10)
rubirikiro

为避免使用4个字母的单词,请不要将length设置为4。

吉姆

答案 8 :(得分:1)

python3.6+中,您可以使用secrets module

secrets模块用于生成加密强度高的密码 适用于管理数据(例如密码,帐户)的随机数 身份验证,安全令牌和相关机密。

尤其是,应优先使用机密而不是默认值 设计了随机模块中的伪随机数生成器 用于建模和仿真,而不用于安全性或加密。

在测试768bit安全令牌的生成时,我发现:

  • random.choices()-0.000246
  • secrets.choice()-0.003529

secrets模块的速度较慢,但​​是在测试之外,您应该将其用于加密目的:

import string, secrets

def random_string(size):        
        letters = string.ascii_lowercase+string.ascii_uppercase+string.digits            
        return ''.join(secrets.choice(letters) for i in range(size))

print(random_string(768))

答案 9 :(得分:0)

安装此软件包:

pip3 install py_essentials

并使用此代码:

from py_essentials import simpleRandom as sr
print(sr.randomString(4))

More informations about the method other parameters are available here.

答案 10 :(得分:0)

此函数生成随机字符串,包括大写,小写字母,数字,传递长度分隔符,no_of_blocks以指定字符串格式

例如:len_sep = 4,no_of_blocks = 4将生成以下模式,

  

F4nQ-Vh5z-JKEC-WhuS

其中,长度分隔符将在4个字符后添加“ - ”

  

<强> XXXX -

没有块会生成以下字符串作为字符串

  

XXXX - XXXX - XXXX - XXXX

如果需要单个随机字符串,只需将no_of_blocks变量保持为1,并使用len_sep指定随机字符串的长度。

例如:len_sep = 10,no_of_blocks = 1,将生成以下模式,即。随机字符串长度10

  

<强> F01xgCdoDU

import random as r

def generate_random_string(len_sep, no_of_blocks):
    random_string = ''
    random_str_seq = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for i in range(0,len_sep*no_of_blocks):
        if i % len_sep == 0 and i != 0:
            random_string += '-'
        random_string += str(random_str_seq[r.randint(0, len(random_str_seq) - 1)])
    return random_string

答案 11 :(得分:0)

import random 
import string

def get_random_string(size):
    chars = string.ascii_lowercase+string.ascii_uppercase+string.digits
    ''.join(random.choice(chars) for _ in range(size))

print(get_random_string(20)

输出:FfxjmkyyLG5HvLeRudDS

答案 12 :(得分:-1)

尝试导入以下软件包 来自随机导入*