美文网首页
比起python造假,还有比faker更牛的?

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

作者: 途途途途 | 来源:发表于2021-08-20 10:46 被阅读0次

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

    工作: 产品/品牌专员

    邮箱: 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条个人信息

    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': '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做数据处理和分析等.....

    还是相当实用的

    相关文章

      网友评论

          本文标题:比起python造假,还有比faker更牛的?

          本文链接:https://www.haomeiwen.com/subject/cbxtiltx.html