如何用Python语言生成随机字符串
来源:互联网 发布:虚拟化和云计算的区别 编辑:程序博客网 时间:2024/05/06 11:54
这是在Stackoverflow的关于 “用Python语言简洁地生成随机字符串” 的经典问答。
将此文翻译并分享下。
问: by Hellnar
我想生成一个长度为N的字符串。
这个字符串应由数字和大写英文字母组成,如下:
• 6U1S75
• 4Z4UKK
• U911K4
我怎样用Phyton语言实现这项功能?
答: by Ignacio Vazquez-Abrams
用一行语句解决此问题:
<span style="font-size:14px;"></span><pre name="code" class="python"><span style="font-size:14px;">''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(N))</span>
为了循环使用,为其添加一个简单的函数,具体如下:
>>> import string>>> import random>>> def id_generator(size=6, chars=string.ascii_uppercase + string.digits):... return ''.join(random.choice(chars) for _ in range(size))...>>> id_generator()'G5G74W'>>> id_generator(3, "6793YUIO")'Y3U'
是怎样实现此功能的?
我们导入string,这个模块包含通用ASCII码的字符序列;导入random,这个模块用来随机生成字符串。
</pre></p><p><span style="background:rgb(238, 238, 238);">string.ascii_uppercase + string.digits</span>只是将ASCII大写字符和数字连接到列表中。</p><p style="font-family: Arial;"><pre name="code" class="python">>>> string.ascii_uppercase'ABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> string.digits'0123456789'>>> string.ascii_uppercase + string.digits'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
然后我们可以用列表解析来创建一个包含'n'个元素的列表:
>>> range(4) # range create a list of 'n' numbers[0, 1, 2, 3]>>> ['elem' for _ in range(4)] # we use range to create 4 times 'elem'['elem', 'elem', 'elem', 'elem']
在上面这个例子里,我们用[
来创建列表,但我们没有在id_generator函数中创建列表,所以Python并没有在内存中创建列表,但Python一个接一个很快地创建了这些元素(更多信息,请点击这里)。
我们并不去创建n次elem字符串,而是由Python从字符序列中选取并创建n次随机字符:
>>> random.choice("abcde")'a'>>> random.choice("abcde")'d'>>> random.choice("abcde")'b'
因此,random.choice(chars) for _ inrange(size)的确在创建一个长度为size的字符序列。字符从chars
随机选取:
>>> [random.choice('abcde') for _ in range(3)]['a', 'b', 'b']>>> [random.choice('abcde') for _ in range(3)]['e', 'b', 'e']>>> [random.choice('abcde') for _ in range(3)]['d', 'a', 'c']
最后我们将这些都加入到一个空字符串中,这样字符序列就变成了字符串:
>>> ''.join(['a', 'b', 'b'])'abb'>>> [random.choice('abcde') for _ in range(3)]['d', 'c', 'b']>>> ''.join(random.choice('abcde') for _ in range(3))'dac'
点击原文链接
此文在CC-By-SA 3.0许可证下使用
0 0
- 如何用Python语言生成随机字符串
- 如何用java随机生成一个汉字?
- python随机生成字符串
- python 生成随机字符串
- python随机生成字符串
- Python 生成随机字符串
- python 随机生成字符串
- Python 生成随机字符串
- python题目-----如何用sub替换字符串
- 如何用jsp页面生成随机的验证数字码
- 如何用matlab生成不重复的随机整数矩阵
- 关于如何用JAVA代码生成随机图片验证码
- python 随机生成 01 字符串
- 探究Python生成随机字符串
- 如何用String字符串生成JSONObject和JSONArray数据
- 如何用String字符串生成JSONObject和JSONArray数据
- 如何用树莓派3+Python+wiringpi生成PWM
- python 如何用列表生成式创建2维list?
- 谷歌趋势可用于预测股市变动
- 微信公众平台开发教程(四)
- 调整数组顺序使得奇数位于偶数前面
- Oracle常用函数
- 编写优秀代码的10个技巧
- 如何用Python语言生成随机字符串
- nyoj 325 【zb的生日】
- SQL*PLUS命令的使用大全
- SD与MMC的区别
- 阿里巴巴云舒:弹性计算的安全问题
- 私有云是个伪命题??
- mysql常见使用问题解决方法参考
- 在xcode5中修改整个项目名
- powershell 的版本所引起的加载 FSharp 编译器问题