李相赫,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/
例如
pip3 install -i https://pypi.doubanio.com/simple/ faker
或者直接下载whl文件
https://pypi.org/project/Faker/#files
基本用法
1. 从faker模块导入Faker这个类。
2. 实例化,保存到变量fake中。
3. 调用name()等方法随机生成一个名字。
4. 调用address()等方法随机生成地址信息。
.......
先来看一个简单的例子
from?faker?import?Faker
#?实例化一个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
'''
这数据简直了,真的假的跟真的一样
再来一打繁体中文名字助助兴
for?i?in?range(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
工作:?产品/品牌专员
邮箱:?jiejiang@xianglong.cn
文本:?数据我的主题次数电影原因.还有社会名称如此.提供无法阅读研究分析不会.
登录生活教育无法为什说明.不会对于不能各种情况支持.
经济经营大家可是主要决定.说明发布地区包括所有发布.提供希望首页主要操作帮助方式.
不能谢谢类别.业务内容社区如何查看社会积分.
他的美国标题发现完全行业以及.电脑支持应用登录世界公司什么这里.
'''
我们再来看看其他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条个人信息
for?i?in?range(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':?'xiulan06@hotmail.com', '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':?'songqiang@gmail.com', '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':?'swen@hotmail.com', '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':?'hhan@hotmail.com', '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':?'leixiuying@yahoo.com', 'birthdate': datetime.date(2007, 6, 14)}
'''
完了我们可以将这些字典导入pandas做数据处理和分析等.....
还是相当实用的
|