PHP前端开发

技巧 | 一个以假乱真的Python库,我裂开了。。

百变鹏仔 1个月前 (01-20) #Python
文章标签 以假乱真


今天逛GitHub的时候发现一个很牛X的库 -- Faker,这个库能给生成一些虚假的信息,包括个人信息或者一些测试数据,如果我们在开发中需要利用一些假数据来做测试,那么这个库就派上用场啦~

1. 安装
直接pip安装即可:
pip install Faker

2. 使用
2.1 简单使用 

创建虚拟姓名、电话号码、地址等信息:

from faker import Fakerfake = Faker()fake.name()# 'Jonathon Dixon'fake.phone_number()# '262-035-1927'fake.address()# '590 Hart MotorwaySergioshire, NM 76453'

2.2 国内信息 

这个库默认显示是国外的信息,接下来我们设置一下国内信息
from faker import Fakerfake = Faker('zh_CN')fake.name()# '汪雪梅'fake.phone_number()# '18535612607'fake.address()# '重庆市秀云县静安潜江街X座 690499'

是不是可以假乱真~

当然,如果要生成其他语种或地区的数据,也是可以的,直接替换Faker参数即可,以下是这个库所支持的语种:
ar_EG - Arabic (Egypt)ar_PS - Arabic (Palestine)ar_SA - Arabic (Saudi Arabia)bg_BG - Bulgarianbs_BA - Bosniancs_CZ - Czechde_DE - Germandk_DK - Danishel_GR - Greeken_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 - Estonianfa_IR - Persian (Iran)fi_FI - Finnishfr_FR - Frenchhi_IN - Hindihr_HR - Croatianhu_HU - Hungarianhy_AM - Armenianit_IT - Italianja_JP - Japaneseka_GE - Georgian (Georgia)ko_KR - Koreanlt_LT - Lithuanianlv_LV - Latvianne_NP - Nepalinl_NL - Dutch (Netherlands)no_NO - Norwegianpl_PL - Polishpt_BR - Portuguese (Brazil)pt_PT - Portuguese (Portugal)ro_RO - Romanianru_RU - Russiansl_SI - Slovenesv_SE - Swedishtr_TR - Turkishuk_UA - Ukrainianzh_CN - Chinese (China Mainland)zh_TW - Chinese (China Taiwan)

2.3 生成个人档案信息 

fake.profile(fields=None, sex=None)
结果:


2.4 批量生成人员信息 

import collectionsimport ngenderimport datetimeimport pandas as pdall_info = []pa_list = ['name','gender', 'age', 'job', 'company', 'address', 'phone_number', 'company_email']for i in range(15):    people = collections.namedtuple('User', pa_list)     people.name = fake.name()    people.gender = '男' if ngender.guess(people.name)[0] == 'male' else '女'    people.age = datetime.datetime.now().year - fake.date_of_birth(tzinfo=None, minimum_age=25, maximum_age=40).year # 出生日期    people.job = fake.job()    people.company = fake.company()    people.address = fake.address().split(' ')[0]    people.phone_number = fake.phone_number()    people.company_email = fake.company_email()    lsts = [people.name, people.gender, people.age, people.job, people.company, people.address, people.phone_number, people.company_email]    all_info.append(lsts)pd.DataFrame(all_info,columns=pa_list)
效果:fake 实例还有很多方法可用:
  • address 地址

  • person 人物类

  • barcode 条码类

  • color 颜色类

  • company 公司类

    立即学习“Python免费学习笔记(深入)”;

  • credit_card 银行卡类

  • currency 货币

  • date_time 时间日期类

  • file 文件类

  • internet 互联网类

  • job 工作

  • lorem 乱数假文

  • misc 杂项类

  • phone_number 手机号

  • python python数据

  • profile 档案信息

  • ssn 身份证号码

  • user_agent 用户代理

官方文档:

https://faker.readthedocs.io/en/master/