当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » Python  » 常用工具方法
分享到: 
收藏 +0
2

标签: 随机字符串

代码片段(1) [全屏查看所有代码]

1. [代码][Python]代码     跳至 [1] [全屏预览]

from random import Random
def random_str(randomlength=8):
    str = ''
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    length = len(chars) - 1
    random = Random()
    for i in range(randomlength):
        str+=chars[random.randint(0, length)]
    return str


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(14)

  • 1楼:骠骑将军 发表于 2011-06-15 17:39 回复此评论
    import random, string
    
    def random_str(randomlength=8):
        a = list(string.ascii_letters)
        random.shuffle(a)
        return ''.join(a[:randomlength])
  • 2楼:q1wv 发表于 2011-06-15 18:21 回复此评论
    ''.join(map(lambda xx:(hex(ord(xx))[2:]),os.urandom(16)))
  • 3楼:云涵 发表于 2011-06-16 08:04 回复此评论
    ''.join([(string.ascii_letters+string.digits)[x] for x in random.sample(range(0,62),8)])
  • 4楼:huwei 发表于 2011-06-16 09:33 回复此评论
    cool
  • 5楼:aforbe 发表于 2011-06-16 16:45 回复此评论
    ''.join(random.sample(string.ascii_letters+string.digits, 8))
  • 6楼:aforbe 发表于 2011-06-16 16:52 回复此评论

    引用来自“q1wv”的评论

    ''.join(map(lambda xx:(hex(ord(xx))[2:]),os.urandom(16)))
    挺好。
  • 7楼:huwei 发表于 2011-06-17 07:42 回复此评论
    我是python新手,这新手和老鸟写的代码差距好大啊。呵呵呵
  • 8楼:流_云 发表于 2011-06-20 23:40 回复此评论
    呵呵,学习了。后面牛人们的代码,小弟收获挺多,谢谢了
  • 9楼:慕容日华 发表于 2011-07-14 23:46 回复此评论
    真的行吗?
  • 10楼:EthanZ 发表于 2011-07-24 23:42 回复此评论

    引用来自“q1wv”的评论

    ''.join(map(lambda xx:(hex(ord(xx))[2:]),os.urandom(16)))
    这个真没看懂
  • 11楼:states 发表于 2014-03-13 17:25 回复此评论
    import random 

    def random_str(len): 
        str="" 
        for i in range(len): 
            str+=(random.choice(" ABCDEF ")) 
        return str

    弱弱的问一句写成一行有什么好处?难道速度会变快
  • 12楼:wewewe 发表于 2016-07-20 16:03 回复此评论

    引用来自“states”的评论

    import random 

    def random_str(len): 
        str="" 
        for i in range(len): 
            str+=(random.choice(" ABCDEF ")) 
        return str

    弱弱的问一句写成一行有什么好处?难道速度会变快
    我正好要用到,只是copy一下,我当然会用一行的
  • 13楼:wewewe 发表于 2016-07-20 16:04 回复此评论

    引用来自“EthanZ”的评论

    引用来自“q1wv”的评论

    ''.join(map(lambda xx:(hex(ord(xx))[2:]),os.urandom(16)))
    这个真没看懂
    看懂干嘛 , 拿来用就是
  • 14楼:李拜天 发表于 2019-03-03 20:34 回复此评论
    2楼的答案只能用在python2?反正在Python3下运行不了。
    3楼的答案效率较低,因为只能在62位选出N位,所以不会出现两个'a',且只能62位以下,降低了复杂度,不推荐使用。

    推荐下面这个,系统函数,速度最优
    ''.join(random.choices(string.ascii_letters + string.digits, k=32))

    三种方式速度对比:https://www.v2ex.com/t/394944
开源从代码分享开始 分享代码