在python中生成随机字符串
rstr的Python项目详细描述
rstr是一个帮助模块,用于轻松生成各种类型的随机字符串。 它可以用于模糊测试、生成虚拟数据或其他 应用。
它在标准库之外没有依赖项,并且是兼容的 使用python 3。
一句小心话
默认情况下,rstr使用pythonrandom模块生成psuedorandom文本。该模块基于mersenne twister,在密码上是not安全的。
如果要使用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'
还可以通过添加两个参数来生成一个长度范围。在下面 case,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()相同的参数,用于 指定长度并包括或排除特定字符。
- 字母()
- 标准库中string.letters提供的字符。
- 大写()
- 标准库中string.uppercase提供的字符。
- 小写()
- 标准库中string.lowercase提供的字符。
- 可打印()
- 标准库中string.printable提供的字符。
- 标点符号()
- 标准库中string.penstion提供的字符。
- 非空格()
- 标准库中string.printable提供的字符,除了 对于表示空白的:制表符、空格等。
- 数字()
- 标准库中string.digits提供的字符。
- 非数字()
- 由string.letters和 标准库中的字符串标点符号。
- 非字母()
- 由string.digits和 标准库中的字符串标点符号。
- 正常值()
- 文本输入中通常接受的字符,相当于string.digits+ string.letters+''(空格字符)。
- postalsafe()
- 美国邮政地址中安全使用的字符: 大写和小写字母、数字、空格和标点符号句点, 哈希()、连字符和正斜杠。
- urlsafe()
- URL中使用的安全字符(无保留):字母、数字、连字符、句点、下划线, 还有瓷砖。
- 域安全()
- 允许在主机名中使用的字符,因此,在Internet域中:字母, 数字和连字符。
谢格
受同名java库的启发,xeger()方法允许用户 从常规e创建随机字符串表达。
例如,要生成符合加拿大格式的邮政编码:
>>> 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'
还可以用AddiaLababeTe()方法添加一个现有的字母表:
>>> rs.add_alphabet('odds', '13579') >>> rs.odds() '339599519'
示例
可以将rstr与python的内置字符串格式结合起来生成字符串 适合各种模板。
电子邮件地址:
'{0}@{1}.{2}'.format(rstr.nonwhitespace(exclude='@'), rstr.domainsafe() rstr.letters(3))
网址:
'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), )