python之伪数据(random、string、faker)

1.random模块

1
2
3
4
5
6
7
random: 生成0~1的随机浮点数 0<=n<1.0
uniform: 生成指定范围的随机浮点数 a<=n<=b
randint: 生成指定范围内的整数 a<=n<=b
randrange: 在指定范围内 按指定基数递增的集合中 获取一个随机数 eg:randrange(a, b, 2)
choice: 从序列中获取一个随机数  eg:print(random.choice("python"))
shuffle:用于将一个列表中的元素打乱  eg:random.shuffle(names)
sample:从指定序列中随机获取指定长度的片段,且不改变原有序列 eg:random.sample(sequence, k)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
print('random.random(生成0~1随机浮点数):', random.random())
print('random.uniform(生成指定范围随机浮点数):', random.uniform(1, 100))
print('random.randint(生成指定范围整数):', random.randint(1, 100))
print('random.randrange(指定范围指定基数递增随机数):', random.randrange(1, 200, 3))
print('random.choice(序列中随机获取一随机数):', random.choice('python'))
# list_info = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list_info = list(range(10))
random.shuffle(list_info)  # shuffle没有返回值
print('random.shuffle(对列表进行随机排序):', list_info)
print('random.sample(从列表、元组、字符串随机获取指定数量片段):', random.sample(list_info, 3))
-------------------------------------
#random.random(生成0~1随机浮点数): 0.26522067075454425
#random.uniform(生成指定范围随机浮点数): 41.26336247073068
#random.randint(生成指定范围整数): 28
#random.randrange(指定范围指定基数递增随机数): 154
#random.choice(序列中随机获取一随机数): t
#random.shuffle(对列表进行随机排序): [9, 1, 5, 6, 2, 0, 7, 4, 3, 8]
#random.sample(从列表、元组、字符串随机获取指定数量片段): [3, 4, 6]

2.string模块

1
2
3
4
5
6
string.digits:数字0~9
string.ascii_letters:所有字母(大小写)
string.uppercase:所有大写字母
string.lowercase:所有小写字母
string.printable:可打印字符的字符串
string.punctuation:所有标点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
print('string.digits(数字0~9):', string.digits)
print('string.ascii_letters(所有字母(大小写))', string.ascii_letters)
print('string.ascii_lowercase(所有小写字母):', string.ascii_lowercase)
print('string.ascii_uppercase(所有大写字母):', string.ascii_uppercase)
print('string.printable(可打印字符字符串)', string.printable)
print('string.punctuation(所有标点符号):', string.punctuation)
-------------------------------------------------------
#string.digits(数字0~9): 0123456789
#string.ascii_letters(所有字母(大小写)) abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
#string.ascii_lowercase(所有小写字母): abcdefghijklmnopqrstuvwxyz
#string.ascii_uppercase(所有大写字母): ABCDEFGHIJKLMNOPQRSTUVWXYZ
#string.printable(可打印字符字符串) 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~  

#string.punctuation(所有标点符号): !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

应用:生成不重复的随机5位码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def renyi(numlenth):
    """
    综合应用
    :param numlenth:
    :return:
    """
    list_info = random.sample(string.digits + string.ascii_letters, numlenth)
    list_str = ''.join(list_info)
    return list_str


print('获得5位随机数:', renyi(5))
------------------
#获得5位随机数: tzpoY

3.faker模块

  • 个人信息类:
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    name():姓名

    user_name(*args, **kwargs):用户名,只是随机的英文姓名组合,一般是6位

    phone_number():电话号码

    simple_profile(sex=None):个人综合信息,包括用户名,姓名,性别,地址,邮箱,出生日期。
    #个人综合信息: {'username': 'xyang', 'name': '刘俊', 'sex': 'F', 'address': '辽宁省六盘水市孝南呼和浩特街Y座 839563', 'mail': '[email protected]', 'birthdate': datetime.date(1906, 1, 4)}

    profile(fields=None, sex=None):个人详细信息,比简略个人信息多出公司名、血型、工作、位置、域名等等信息。
    #个人详细信息: {'job': '酒店/宾馆销售', 'company': '联通时科传媒有限公司', 'ssn': '500229195805225819', 'residence': '澳门特别行政区艳市新城胡路c座 331579', 'current_location': (Decimal('77.8234735'), Decimal('-125.973198')), 'blood_group': 'AB+', 'website': ['http://www.cui.cn/', 'https://www.31.cn/', 'https://www.chao.net/'], 'username': 'jingli', 'name': '陈帅', 'sex': 'M', 'address': '黑龙江省哈尔滨市东城齐齐哈尔街G座 190003', 'mail': '[email protected]', 'birthdate': datetime.date(1939, 1, 11)}

    password():密码
    参数选项:length:密码长度;special_chars:是否能使用特殊字符;digits:是否包含数字;upper_case:是否包含大写字母;lower_case:是否包含小写字母。
    默认情况:length=10, special_chars=True, digits=True, upper_case=True, lower_case=True

    job():工作
  • 地址信息类
  • 1
    2
    3
    4
    5
    6
    7
    8
    address():完整地址
    street_address():街道+地址
    street_name():街道名
    city_name():城市名
    city():城市
    province():省份名
    postcode():邮编
    country():国家
  • 文章类
  • 1
    2
    3
    4
    5
    word():随机词语  
    words():随机多个词语   
    sentence():随机短语(会包括短语结束标志点号)
    paragraph():随机段落
    paragraphs():多个随机段落
  • 数据类
  • 1
    2
    pystr(min_chars=None, max_chars=20):自定义长度的随机字符串
    pyint():随机整数

faker模块应用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from faker import Faker
from faker import Factory
f = Faker(locale='zh_CN')   # 初始化
print('随机地址:', f.address())
print('随机名字:', f.name())
print('随机请求头:', Factory.create().user_agent())
print('个人综合信息:', f.simple_profile())
print('个人简略信息:', f.profile())
print('随机词语:', f.word())
print('随机段落:', f.paragraph())
print('随机字符串:', f.pystr(12))
----------------------------
#随机地址: 黑龙江省澳门县金平李路A座 688630

#随机名字: 曹帆

#随机请求头: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/532.1 (KHTML, like Gecko) CriOS/40.0.814.0 Mobile/51U966 Safari/532.1

#个人综合信息: {'username': 'guiyinghou', 'name': '潘小红', 'sex': 'F', 'address': '陕西省北京县南湖吕街m座 923622', 'mail': '[email protected]', 'birthdate': datetime.date(1961, 5, 4)}

#个人简略信息: {'job': '针织工', 'company': '明腾信息有限公司', 'ssn': '530421195501115966', 'residence': '澳门特别行政区海燕县金平曹路l座 360735', 'current_location': (Decimal('-30.5071205'), Decimal('-137.220189')), 'blood_group': 'A+', 'website': ['http://www.yanzhu.cn/', 'http://www.vm.cn/', 'http://xiulankang.cn/'], 'username': 'minghan', 'name': '刘建', 'sex': 'M', 'address': '江苏省霞市怀柔海口路i座 952852', 'mail': '[email protected]', 'birthdate': datetime.date(1929, 12, 17)}

#随机词语: 因为

#随机段落: 学生就是名称知道我们可以.大家比较因为一个.

#随机字符串: xpoNZvseWQWCG