代码之家  ›  专栏  ›  技术社区  ›  RHicke

python中的随机字符串

  •  83
  • RHicke  · 技术社区  · 15 年前

    如何在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
    
    11 回复  |  直到 6 年前
        1
  •  205
  •   sth    7 年前

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

    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'
    
        2
  •  48
  •   Brandon    15 年前

    因为这个问题是相当的,呃,随机的,这可能对你有用:

    >>> import uuid
    >>> print uuid.uuid4()
    58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
    
        3
  •  31
  •   ghostdog74    15 年前
    >>> import random
    >>> import string
    >>> s=string.lowercase+string.digits
    >>> ''.join(random.sample(s,10))
    'jw72qidagk
    
        4
  •  15
  •   Tom    11 年前

    回答原始问题:

    os.urandom(n)
    

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

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

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

    用于提供的随机数生成器的易于使用的接口 在您的平台上,请参见Random.SystemRandom。

        5
  •  5
  •   Ross Rogers    15 年前

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

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

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

    len = 50
    print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
    
        6
  •  5
  •   MAK    15 年前

    对于你需要什么样的随机字符串,你并没有说太多。但无论如何,你应该调查 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)
    
        7
  •  2
  •   Spouk    10 年前
    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']
    >>> 
    

    享受。;)

        8
  •  1
  •   Jim    6 年前

    有时,我希望随机的字符串是半可发音的,半难忘的。

    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。

    吉姆

        9
  •  0
  •   1cedsoda    7 年前

    安装此程序包:

    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
  •   Manoj Selvin    7 年前

    此函数生成由大写、小写字母、数字组成的随机字符串,传递长度分隔符,不使用\块指定字符串格式

    例如:len_sep=4,没有_blocks=4的_将生成以下模式,

    f4nq-vh5z-jkec-whus型

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

    XXXX—

    块的数目将生成以下字符模式作为字符串

    XXXX-XXXX-XXXX-XXXX年

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

    例如:len_sep=10,no_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
  •   Rakesh babu    6 年前
    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)
    

    输出:ffxjmkylg5hvlerudds