李相赫,ID:faker,绰号“大魔王”,司职《英雄联盟》中单,1996年5月7日出生于韩国,是国际电子竞技俱乐部T1英雄联盟分部的队员之一
七年拿下17个冠军,集41大荣誉于一身。
.....................
哈哈,扯远了。说正事!
在编写程序过程中,我们常常需要用到很多数据来进行测试。
比如姓名、性别、年龄、电话、邮箱等等。
如果手动制造数据的话,起名字比如“小明”、“小红”、“张三”、“李四”这些,有没有考虑这些名字的感受,他们也很累的吧
再比如密码,网上排名最烂的密码,不也是“123456”,“abcdef”,“asdf”这些。
这样无厘头地制作数据确实很伤神,效率还低,那该怎么办?
如果要是手动制造数据的话,肯定要花费大把精力,这不合理。
这时,Python扩展库Faker来了,带着它那各种各样的数据来了。
faker模块主要是用来创建伪数据,无需手动生成或者手写随机数来生成数据,可以利用faker完成伪造大量测试数据的工作
1. 先安装Faker
pip install Faker
如果下载速度比较慢的话,可以使用国内镜像源来下载
国内源:
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 华中理工大学:http://pypi.hustunique.com/
- 山东理工大学:http://pypi.sdutlinux.org/
- 豆瓣:http://pypi.douban.com/simple/
例如
pip3install -i https://pypi.doubanio.com/simple/ faker
或者直接下载whl文件
https://pypi.org/project/Faker/#files
基本用法
1. 从faker模块导入Faker这个类。
2. 实例化,保存到变量fake中。
3. 调用name()等方法随机生成一个名字。
4. 调用address()等方法随机生成地址信息。
.......
先来看一个简单的例子
fromfakerimportFaker
# 实例化一个fake对象
fake = Faker()
# 虚拟名称
name = fake.name()
print('name:', name)
'''
Kimberly King
'''
# 虚拟地址
address = fake.address()
print('address:', address)
'''
231 Judith Square Apt. 095 New Andrew, NC 36233
'''
我不喜欢英文的怎么办呢?要生成中文的随机数据,我们可以在实例化时给locale参数传入‘zh_CN’这个值:
# 实例化一个fake对象
fake = Faker(locale ='zh_CN')
# 虚拟名称
name = fake.name()
print('name:', name)
'''
name: 王峰
'''
# 虚拟地址
address = fake.address()
print('address:', address)
'''
address: 青海省瑞市金平齐齐哈尔路S座 451088
'''
这数据简直了,真的假的跟真的一样
再来一打繁体中文名字助助兴
foriinrange(12):
print(fake.name())
'''
楊哲瑋
梁雅筑
王淑貞
包惠雯
劉佳樺
張婉婷
趙雅惠
余靜宜
郭傑克
何佳玲
王俊賢
徐庭瑋
'''
除了咱们使用到的中文、英文和繁体中文之外还有那些语言呢?
如果要生成其他语种或地区的数据,我们可以传入相应的地区值:
ar_EG - Arabic (Egypt)
ar_PS - Arabic (Palestine)
ar_SA - Arabic (Saudi Arabia)
bg_BG - Bulgarian
bs_BA - Bosnian
cs_CZ - Czech
de_DE - German
dk_DK - Danish
el_GR - Greek
en_AU - English (Australia)
en_CA - English (Canada)
en_GB - English (Great Britain)
en_NZ - English (New Zealand)
en_US - English (United States)
es_ES - Spanish (Spain)
es_MX - Spanish (Mexico)
et_EE - Estonian
fa_IR - Persian (Iran)
fi_FI - Finnish
fr_FR - French
hi_IN - Hindi
hr_HR - Croatian
hu_HU - Hungarian
hy_AM - Armenian
it_IT - Italian
ja_JP - Japanese
ka_GE - Georgian (Georgia)
ko_KR - Korean
lt_LT - Lithuanian
lv_LV - Latvian
ne_NP - Nepali
nl_NL - Dutch (Netherlands)
no_NO - Norwegian
pl_PL - Polish
pt_BR - Portuguese (Brazil)
pt_PT - Portuguese (Portugal)
ro_RO - Romanian
ru_RU - Russian
sl_SI - Slovene
sv_SE - Swedish
tr_TR - Turkish
uk_UA - Ukrainian
zh_CN - Chinese (China Mainland)
zh_TW - Chinese (China Taiwan)
更多详细的用法有兴趣的小伙伴可以参考
https://faker.readthedocs.io/en/master/providers.html
那除了生成我们看到的姓名、地址之外呢。能生成一个女盆友吗
address
company
date_time
job
person
phone_number
profile
python
user_agent
虽然不能生成一个女盆友
但是能为你生成女朋友的信息
哈哈,绝了
# 生成女朋友信息
fake = Faker(locale ='zh_CN')
print('姓名:', fake.first_name_female())# 随机输出女性中文姓名
print('联系方式:', fake.phone_number())# 随机输出电话号码
print('地址:', fake.address())# 随机输出地址
print('公司:', fake.bs())# 随机输出公司
print('工作:', fake.job())# 随机输出工作
print('邮箱:', fake.company_email())# 随机输出邮箱
print('文本:', fake.text())
'''
姓名: 芳
联系方式: 14511916353
地址: 香港特别行政区太原市新城乌鲁木齐路N座 107880
公司: drive wireless content
工作: 产品/品牌专员
文本: 数据我的主题次数电影原因.还有社会名称如此.提供无法阅读研究分析不会.
登录生活教育无法为什说明.不会对于不能各种情况支持.
经济经营大家可是主要决定.说明发布地区包括所有发布.提供希望首页主要操作帮助方式.
不能谢谢类别.业务内容社区如何查看社会积分.
他的美国标题发现完全行业以及.电脑支持应用登录世界公司什么这里.
'''
我们再来看看其他faker的其他的一些方法
User_Agent = fake.user_agent()
print(User_Agent)
'''
Opera/9.99.(Windows NT 10.0; pt-PT) Presto/2.9.175 Version/10.00
'''
date_time = fake.date_time()
print(date_time)
'''
1987-10-28 16:11:32
'''
pydict = fake.pydict()
print(pydict)
'''
{'没有': 'lhQzYRmbaizgldsvUrqg', '事情': 'cmKxVnESqpAaSOOUfDye', '这样': 'http://gong.cn/explore/posts/tags/login/', '销售': 4011, '看到': 3094, '文章': Decimal('-4757937.9745888'), '工作': 51.3877475789147, '音乐': 'TsqsYgNgUNJeRfqnppsK', '正在': 7568, '上海': Decimal('-9330365128242.59'), '女人': 4001}
'''
生成五条个人信息
# 生成5条个人信息
foriinrange(5):
print(f'第{i+1}个人信息如下:', fake.profile())
'''
第1个人信息如下: {'job': '工长', 'company': '菊风公司网络有限公司', 'ssn': '530112194208099250', 'residence': '天津市婷县东城沈阳路Y座 395802', 'current_location': (Decimal('-44.750624'), Decimal('74.315880')), 'blood_group': 'A-', 'website': ['https://www.nl.com/', 'http://chen.cn/', 'https://www.lilin.cn/'], 'username': 'lichao', 'name': '詹红梅', 'sex': 'F', 'address': '湖北省呼和浩特县南湖成都路u座 255339', 'mail': '[email protected]', 'birthdate': datetime.date(1993, 6, 13)}
第2个人信息如下: {'job': '医疗器械销售代表', 'company': '天开信息有限公司', 'ssn': '13013219490419544X', 'residence': '内蒙古自治区娟县海陵刘街G座 529004', 'current_location': (Decimal('3.907486'), Decimal('93.448971')), 'blood_group': 'O-', 'website': ['http://www.tao.cn/', 'https://www.cuiqiu.cn/', 'http://qiangxia.cn/', 'http://www.pingjing.cn/'], 'username': 'gangfang', 'name': '何秀芳', 'sex': 'F', 'address': '重庆市贵阳县清城哈尔滨路i座 171613', 'mail': '[email protected]', 'birthdate': datetime.date(1974, 2, 10)}
第3个人信息如下: {'job': '旅游产品销售', 'company': '巨奥科技有限公司', 'ssn': '433101195306163505', 'residence': '重庆市上海市友好赵街B座 871399', 'current_location': (Decimal('-16.599713'), Decimal('66.806667')), 'blood_group': 'A-', 'website': ['https://www.jiangliao.cn/', 'https://jia.cn/', 'http://if.cn/', 'http://www.49.com/'], 'username': 'yangcao', 'name': '黄小红', 'sex': 'F', 'address': '江西省哈尔滨市花溪佛山路Z座 193056', 'mail': '[email protected]', 'birthdate': datetime.date(1943, 6, 25)}
第4个人信息如下: {'job': '建筑制图/模型/渲染', 'company': '迪摩信息有限公司', 'ssn': '330204194112284564', 'residence': '澳门特别行政区文县滨城张路y座 987574', 'current_location': (Decimal('-56.3441425'), Decimal('19.279135')), 'blood_group': 'B-', 'website': ['http://www.juanli.cn/', 'http://www.io.com/', 'http://min.net/'], 'username': 'yan45', 'name': '楚伟', 'sex': 'F', 'address': '陕西省六安市门头沟潜江路I座 111666', 'mail': '[email protected]', 'birthdate': datetime.date(1964, 10, 10)}
第5个人信息如下: {'job': '生产主管', 'company': '商软冠联网络有限公司', 'ssn': '610800198205117557', 'residence': '新疆维吾尔自治区小红市花溪易路x座 483650', 'current_location': (Decimal('70.056298'), Decimal('-80.291666')), 'blood_group': 'A+', 'website': ['https://aq.cn/', 'http://www.chang.net/'], 'username': 'li77', 'name': '欧桂芝', 'sex': 'F', 'address': '福建省太原市沈北新合山路B座 440615', 'mail': '[email protected]', 'birthdate': datetime.date(2007, 6, 14)}
'''
完了我们可以将这些字典导入pandas做数据处理和分析等.....
还是相当实用的