zoukankan      html  css  js  c++  java
  • python生成随机字符串_Python生成随机字符串

    方法一、依赖python本身的方法实现

    python生成随机字符串

    We can generate a random string in Python using the random module. Sometimes we want to generate a random string for unique identifiers, session id or to suggest a password.

    我们可以使用random模块在Python中生成随机字符串。 有时我们想为唯一标识符,会话ID或建议密码生成一个随机字符串。

    Python生成随机字符串 (Python Generate Random String)

    Let’s define the utility function to generate a random string from the given sequence of characters and specified size.

    让我们定义实用程序函数,以根据给定的字符序列和指定的大小生成随机字符串。

    import random
    import string
     
    def random_string_generator(str_size, allowed_chars):
        return ''.join(random.choice(allowed_chars) for x in range(str_size))
     
    chars = string.ascii_letters + string.punctuation
    size = 12
     
    print(chars)
    print('Random String of length 12 =', random_string_generator(size, chars))

    Output:

    输出:

    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;?@[\]^_`{|}~
    Random String of length 12 = 'MP'?EI$MO%w

    We are using random.choice() function to select a random character from the provided sequence of characters. Then we are using for loop to run it given number of times. Then we are using string join() function to concatenate them and return the randomly generated string.

    我们正在使用random.choice()函数从提供的字符序列中选择一个随机字符。 然后,我们使用for循环运行给定次数。 然后,我们使用字符串join()函数将它们连接起来并返回随机生成的字符串。

    What if we want to keep the random string size as variable, say between 8 and 12 characters. Let’s tweak our function little bit to randomly select the size of the random string.

    如果我们想将随机字符串的大小保留为变量,例如8到12个字符,该怎么办? 让我们稍微调整一下函数以随机选择随机字符串的大小。

    import random
    from random import randint
    import string
     
    def random_string_generator_variable_size(min_size, max_size, allowed_chars):
        return ''.join(random.choice(allowed_chars) for x in range(randint(min_size, max_size)))
     
     
    chars = string.ascii_letters + string.punctuation
    print('Random String of random length (6-12) =', random_string_generator_variable_size(6, 12, chars))

    Output: Random String of random length (6-12) = d;@o/?[yq=

    输出: Random String of random length (6-12) = d;@o/?[yq=

    The code is almost the same as earlier function except for the use of the randint() function. This is done to randomly select the size of the randomly generated string.

    除了使用randint()函数外,该代码与早期函数几乎相同。 这样做是为了随机选择随机生成的字符串的大小。

    随机UUID生成 (Random UUID Generation)

    If you want a Unique ID based on RFC-4122 specifications, then you can use Python uuid module.

    如果您想要基于RFC-4122规范的唯一ID,则可以使用Python uuid模块。

    import uuid
     
    print('Random UUID from uuid1() =', uuid.uuid1())
    print('Random UUID from uuid4() =', uuid.uuid4())

    Output:

    输出:

    Random UUID from uuid1() = dcc1044e-d76b-11e8-b54e-186590db0e15
    Random UUID from uuid4() = a0e98c8d-a6fd-4125-bc1c-69ffe6456cb6

     方法二、利用自己输出的字符串

        #!/usr/bin/env python
        # -*- coding: utf-8 -*-
         
        import random
        import string
         
        #第一种方法
         
        seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+=-"
        sa = []
        for i in range(8):
        sa.append(random.choice(seed))
        salt = ''.join(sa)
        print salt
         
        #第二种方法
         
        salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
        print salt

    GitHub RepositoryGitHub存储库中检出完整的python脚本和更多Python示例。

    翻译自: https://www.journaldev.com/23782/python-generate-random-string

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    apache的用户认证
    Apache的配置文件
    AH00052: child pid 25043 exit signal Segmentation fault (11)
    Apache的工作模式
    apache的目录别名
    RAID的几种级别
    网络服务--NFS服务
    MySQL 5.7元数据库
    [ERROR] COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8'
    .Net MVC断点进不去
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/15416907.html
Copyright © 2011-2022 走看看