在Python中生成随机字符串
项目描述
rstr 是一个辅助模块,用于轻松生成各种类型的随机字符串。它可以用于模糊测试、生成虚拟数据或其他应用。
它不依赖于标准库之外的任何库。
注意事项
默认情况下,rstr 使用 Python 的 random 模块来生成伪随机文本。该模块基于梅森旋转器,不 是加密安全的。
如果您希望使用rstr进行密码生成或其他加密应用,您必须创建一个使用 SystemRandom 的实例。
例如
>> from rstr import Rstr >> from random import SystemRandom >> rs = Rstr(SystemRandom())
使用
rstr的基本方法是 rstr()。它至少需要一个参数,即用于生成字符串的字符集。
>>> import rstr >>> rstr.rstr('ABC') 'AACAACCB'
默认情况下,它将返回长度在1到10个字符之间的字符串。您可以通过包含第二个参数来指定确切的长度
>>> rstr.rstr('ABC', 4) 'ACBC'
您还可以通过添加两个参数来生成一个长度范围。在以下情况下,rstr将返回长度在5到10个字符之间的随机字符串。
>>> rstr.rstr('ABC', 5, 10) 'CBCCCABAA'
您还可以在字符串中包含特定的字符。这在测试验证器以确保某些字符被拒绝时很有用。列在“include”参数中的字符将 始终 在结果字符串的某个位置出现。
>>> rstr.rstr('ABC', include='&') 'CA&A'
相反,您可以从生成的字符串中排除特定的字符。这在从预定义的字符集开始时很有帮助。
>>> import string >>> rstr.rstr(string.digits, exclude='5') '8661442'
请注意,任何接受字符串的参数也可以接受字符串列表或元组
>>> rstr.rstr(['A', 'B', 'C'], include = ['@'], exclude=('C',)) 'BAAABBA@BAA'
其他方法
rstr提供的其他方法,除了 rstr() 和 xeger(),是无需参数即可调用的便利方法,并提供了预定义的字符集。它们在指定长度和包含或排除特定字符方面接受与 rstr() 相同的参数。
- letters()
标准库中string.letters提供的字符。
- uppercase()
标准库中string.uppercase提供的字符。
- lowercase()
标准库中string.lowercase提供的字符。
- printable()
标准库中string.printable提供的字符。
- punctuation()
标准库中string.punctuation提供的字符。
- nonwhitespace()
标准库中string.printable提供的字符,除了代表空白(制表符、空格等)的字符。
- digits()
标准库中string.digits提供的字符。
- nondigits()
标准库中string.letters和string.punctuation连接提供的字符。
- nonletters()
标准库中string.digits和string.punctuation连接提供的字符。
- normal()
在文本输入中通常接受的字符,相当于string.digits + string.letters + ‘ ‘(空格字符)。
- unambiguous()
标准库中string.digits和string.letters连接提供的字符,除了类似字符:1、l和I等。
- postalsafe()
在美国邮政地址中安全使用的字符:大小写字母、数字、空格以及句点、井号、连字符和正斜杠。
- urlsafe()
在URL中安全(未保留)使用的字符:字母、数字、连字符、句点、下划线和波浪号。
- domainsafe()
允许用于主机名,因此也允许用于互联网域的字符:字母、数字和连字符。
Xeger
受同名的Java库启发,xeger() 方法允许用户从正则表达式创建随机字符串。
例如,生成符合加拿大格式的邮政编码
>>> import rstr >>> rstr.xeger(r'[A-Z]\d[A-Z] \d[A-Z]\d') u'R6M 1W5'
xeger可以很好地与大多数简单的正则表达式一起工作,但它不支持所有Python正则表达式功能。
自定义字符集
如果您有希望与方法快捷方式一起使用的自定义字符集,您可以在创建Rstr对象时通过关键字指定它们。
>>> from rstr import Rstr >>> rs = Rstr(vowels='AEIOU') >>> rs.vowels() 'AEEUU'
您还可以使用add_alphabet()方法向现有实例添加一个字符集。
>>> rs.add_alphabet('odds', '13579') >>> rs.odds() '339599519'
示例
您可以将rstr与Python的内置字符串格式化相结合,以生成适合各种模板的字符串。
电子邮件地址
'{0}@{1}.{2}'.format(rstr.nonwhitespace(exclude='@'), rstr.domainsafe(), rstr.letters(3))
URL
'http://{0}.{1}/{2}/?{3}'.format(rstr.domainsafe(), rstr.letters(3), rstr.urlsafe(), rstr.urlsafe())
邮政地址
"""{0} {1} {2} {3} {4}, {5} {6} """.format(rstr.letters(4, 8).title(), rstr.letters(4, 8).title(), rstr.digits(3, 5), rstr.letters(4, 10).title(), rstr.letters(4, 15).title(), rstr.uppercase(2), rstr.digits(5), )
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
rstr-3.2.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c4a564d4dfb4472d931d145c43d1cf1ad78c24592142e7755b8866179eeac012 |
|
MD5 | a32d1be2e15d0b6255025e46f8bf475a |
|
BLAKE2b-256 | 9f80d7449656d45a776b7a443ce3af4eb97c4debe416a1a80f60311c7cfd02ff |
rstr-3.2.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f39195d38da1748331eeec52f1276e71eb6295e7949beea91a5e9af2340d7b3b |
|
MD5 | ba445e46fd44c0dad5e3b5f87aaae143 |
|
BLAKE2b-256 | c88ca0f14f2fcdd846839c478048032b2fc93293deaa936ff6751f27dcf50995 |