比起python造假,还有比faker更牛的?

李相赫,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

工作: 产品/品牌专员

邮箱: [email protected]

文本: 数据我的主题次数电影原因.还有社会名称如此.提供无法阅读研究分析不会.

登录生活教育无法为什说明.不会对于不能各种情况支持.

经济经营大家可是主要决定.说明发布地区包括所有发布.提供希望首页主要操作帮助方式.

不能谢谢类别.业务内容社区如何查看社会积分.

他的美国标题发现完全行业以及.电脑支持应用登录世界公司什么这里.

'''

我们再来看看其他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做数据处理和分析等.....

还是相当实用的

你可能感兴趣的:(比起python造假,还有比faker更牛的?)