Fork me on GitHub

Python最假的库:Faker

这是崔斯特的第四十八篇原创文章

好假啊 (๑• . •๑)

先申明下,这里说的Faker和LOL的大魔王没有任何关系,只是恰好重名而已。

故事由来

最近做一个项目时需要随机生成人的名字,百度之后,我是这样写的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def random_first_name():
"""百家姓中选择一个"""
name = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳']
return random.choice(name)
def random_last_name():
"""生成随机汉语"""
head = random.randint(0xb0, 0xf7)
body = random.randint(0xa1, 0xf9) # 在head区号为55的那一块最后5个汉字是乱码,为了方便缩减下范围
val = f'{head:x}{body:x}'
str_ = bytes.fromhex(val).decode('gb2312')
return str_
name = random_first_name() + random_last_name()

前辈在review的时候说怎么这么复杂,Python中有一个专门生成各类假数据的库:Faker,你去了解下。

Faker

项目地址:faker

安装:pip install Faker

中文生成假数据:Language zh_CN

那么Faker能生成那些假数据了?

1
2
3
4
from faker import Faker
fake = Faker(locale='zh_CN')
# 初始化

地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fake.street_name()
# '广州街
fake.city_suffix()
# '县'
fake.street_address()
# '香港路B座'
fake.longitude()
# -98.702031
fake.district()
# '璧山'

汽车

1
2
fake.license_plate()
# HZL 767

银行

1
2
3
4
5
6
7
8
fake.bban()
# 'KLUX5928618542924'
fake.bank_country()
# 'GB'
fake.iban()
# 'GB04BPNH0448315286040'

条形码

1
2
3
4
5
6
7
8
fake.ean(length=13)
# '0994331656275'
fake.ean8()
# '51309350'
fake.ean13()
# '8336323543385'

公司

1
2
3
4
5
6
7
8
9
10
11
fake.company_prefix()
# '鸿睿思博'
fake.bs()
# 'embrace strategic schemas'
fake.company_suffix()
# '科技有限公司'
fake.company()
# '昂歌信息网络有限公司'

信用卡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fake.credit_card_security_code(card_type=None)
# '360'
fake.credit_card_full(card_type=None)
# 'Diners Club / Carte Blanche\n林 莘\n30311852484679 10/19\nCVC: 388\n'
fake.credit_card_number(card_type=None)
# '30240280288941'
fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y")
# '11/26'
fake.credit_card_provider(card_type=None)
# 'Maestro'

互联网

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
fake.domain_word(*args, **kwargs)
# 'jin'
fake.company_email(*args, **kwargs)
# 'zoulei@hou.com'
fake.free_email(*args, **kwargs)
# 'vxu@yahoo.com'
fake.ipv4_private(network=False, address_class=None)
# '10.202.214.57'
fake.ascii_safe_email(*args, **kwargs)
# 'baiyan@example.net'
fake.email(*args, **kwargs)
# 'minggao@gmail.com'
fake.image_url(width=None, height=None)
# 'https://www.lorempixel.com/817/102'
fake.uri_page()
# 'category'
fake.ipv4_network_class()
# 'c'

姓名

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
fake.first_name_female()
# '秀华'
fake.name_male()
# '郏杰'
fake.suffix_female()
# ''
fake.first_name()
# '东'
fake.prefix_female()
# ''
fake.last_name_male()
# '扶'
fake.last_name()
# '荣'
fake.name_female()
# '曹红'
fake.suffix_male()
# ''
fake.last_name_female()
# '辛'
fake.last_romanized_name()
# 'Zhang'
fake.first_romanized_name()
# 'Min'
fake.romanized_name()
# 'Xiuying Qiao'
fake.name()
# '钟想'

电话

1
2
3
4
5
6
7
8
fake.phone_number()
# '18874465626'
fake.msisdn()
# '8086764507444'
fake.phonenumber_prefix()
# 155

user_agent

这个大家应该很熟悉,常用的就是 fake-useragent这个库

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
28
29
30
31
32
33
34
35
36
37
fake.mac_platform_token()
# 'Macintosh; Intel Mac OS X 10_12_1'
fake.firefox()
# ('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_9_4; rv:1.9.4.20) '
# 'Gecko/2012-05-03 04:16:34 Firefox/3.6.10')
fake.windows_platform_token()
# 'Windows 95'
fake.safari()
# ('Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1 like Mac OS X; sat-IN) '
# 'AppleWebKit/533.2.4 (KHTML, like Gecko) Version/3.0.5 Mobile/8B113 '
# 'Safari/6533.2.4')
fake.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
# ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5331 (KHTML, like Gecko) '
# 'Chrome/52.0.838.0 Safari/5331')
fake.opera()
# 'Opera/8.83.(X11; Linux i686; ce-RU) Presto/2.9.169 Version/10.00'
fake.mac_processor()
# 'Intel'
fake.user_agent()
# ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_9 rv:3.0; pa-IN) '
# 'AppleWebKit/532.47.6 (KHTML, like Gecko) Version/4.0.1 Safari/532.47.6')
fake.linux_platform_token()
# 'X11; Linux x86_64'
fake.linux_processor()
# 'i686'
fake.internet_explorer()
# 'Mozilla/5.0 (compatible; MSIE 5.0; Windows NT 5.01; Trident/3.1)'

这里举例的都是中文的,当然也有其他语言的,小伙伴可以去官网看看。

最近在和小伙伴刷题,欢迎加入 Leetcode Solutions By All Language