前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python最假的库:Faker

Python最假的库:Faker

原创
作者头像
小歪
发布2018-05-23 14:07:35
1.6K0
发布2018-05-23 14:07:35
举报

先申明下,这里说的Faker和LOL的大魔王没有任何关系,只是恰好重名而已。 因为找不到图,借用下Faker。

故事由来

最近做一个项目时需要随机生成人的名字,百度之后,我是这样写的

代码语言:javascript
复制
def random_first_name():
    """百家姓中选择一个"""
    name = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳']
    return random.choice(name)


def random_last_name():
    """生成随机汉语"""
    head = random.randint(0xb0, 0xf7)
    body = random.randint(0xa1, 0xf9)   # 在head区号为55的那一块最后5个汉字是乱码,为了方便缩减下范围
    val = f'{head:x}{body:x}'
    str_ = bytes.fromhex(val).decode('gb2312')
    return str_

name = random_first_name() + random_last_name()

前辈在review的时候说怎么这么复杂,Python中有一个专门生成各类假数据的库:Faker,你去了解下。

Faker

项目地址:faker

安装:pip install Faker

中文生成假数据:Language zh_CN

那么Faker能生成那些假数据了?

代码语言:javascript
复制
from faker import Faker

fake = Faker(locale='zh_CN')
# 初始化

地址

代码语言:javascript
复制
fake.street_name()
# '广州街

fake.city_suffix()
# '县'

fake.street_address()
# '中国香港路B座'

fake.longitude()
# -98.702031

fake.district()
# '璧山'

汽车

代码语言:javascript
复制
fake.license_plate()
# HZL 767

银行

代码语言:javascript
复制
fake.bban()
# 'KLUX5928618542924'

fake.bank_country()
# 'GB'

fake.iban()
# 'GB04BPNH0448315286040'

条形码

代码语言:javascript
复制
fake.ean(length=13)
# '0994331656275'

fake.ean8()
# '51309350'

fake.ean13()
# '8336323543385'

公司

代码语言:javascript
复制
fake.company_prefix()
# '鸿睿思博'

fake.bs()
# 'embrace strategic schemas'

fake.company_suffix()
# '科技有限公司'

fake.company()
# '昂歌信息网络有限公司'

信用卡

代码语言:javascript
复制
fake.credit_card_security_code(card_type=None)
# '360'

fake.credit_card_full(card_type=None)
# 'Diners Club / Carte Blanche\n林 莘\n30311852484679 10/19\nCVC: 388\n'

fake.credit_card_number(card_type=None)
# '30240280288941'

fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y")
# '11/26'

fake.credit_card_provider(card_type=None)
# 'Maestro'

互联网

代码语言:javascript
复制
fake.domain_word(*args, **kwargs)
# 'jin'

fake.company_email(*args, **kwargs)
# 'zoulei@hou.com'

fake.free_email(*args, **kwargs)
# 'vxu@yahoo.com'

fake.ipv4_private(network=False, address_class=None)
# '10.202.214.57'

fake.ascii_safe_email(*args, **kwargs)
# 'baiyan@example.net'

fake.email(*args, **kwargs)
# 'minggao@gmail.com'

fake.image_url(width=None, height=None)
# 'https://www.lorempixel.com/817/102'

fake.uri_page()
# 'category'

fake.ipv4_network_class()
# 'c'

姓名

代码语言:javascript
复制
fake.first_name_female()
# '秀华'

fake.name_male()
# '郏杰'

fake.suffix_female()
# ''

fake.first_name()
# '东'

fake.prefix_female()
# ''

fake.last_name_male()
# '扶'

fake.last_name()
# '荣'

fake.name_female()
# '曹红'

fake.suffix_male()
# ''

fake.last_name_female()
# '辛'

fake.last_romanized_name()
# 'Zhang'

fake.first_romanized_name()
# 'Min'

fake.romanized_name()
# 'Xiuying Qiao'

fake.name()
# '钟想'

电话

代码语言:javascript
复制
fake.phone_number()
# '18874465626'

fake.msisdn()
# '8086764507444'

fake.phonenumber_prefix()
# 155

user_agent

这个大家应该很熟悉,常用的就是 fake-useragent这个库

代码语言:javascript
复制
fake.mac_platform_token()
# 'Macintosh; Intel Mac OS X 10_12_1'

fake.firefox()
# ('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_9_4; rv:1.9.4.20) '
#  'Gecko/2012-05-03 04:16:34 Firefox/3.6.10')

fake.windows_platform_token()
# 'Windows 95'

fake.safari()
# ('Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1 like Mac OS X; sat-IN) '
#  'AppleWebKit/533.2.4 (KHTML, like Gecko) Version/3.0.5 Mobile/8B113 '
#  'Safari/6533.2.4')

fake.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
# ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5331 (KHTML, like Gecko) '
#  'Chrome/52.0.838.0 Safari/5331')

fake.opera()
# 'Opera/8.83.(X11; Linux i686; ce-RU) Presto/2.9.169 Version/10.00'

fake.mac_processor()
# 'Intel'

fake.user_agent()
# ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_9 rv:3.0; pa-IN) '
#  'AppleWebKit/532.47.6 (KHTML, like Gecko) Version/4.0.1 Safari/532.47.6')

fake.linux_platform_token()
# 'X11; Linux x86_64'

fake.linux_processor()
# 'i686'

fake.internet_explorer()
# 'Mozilla/5.0 (compatible; MSIE 5.0; Windows NT 5.01; Trident/3.1)'

这里举例的都是中文的,当然也有其他语言的,小伙伴可以去官网看看。

最近在和小伙伴刷题,欢迎加入 Leetcode Solutions By All Language

原文链接

看了下源码,也是随机取得

代码语言:javascript
复制
class Provider(PersonProvider):
    formats = ["{{last_name}}{{first_name}}", ]
    first_names = [
        "伟", "芳", "娜", "敏", "静", "秀英", "丽", "强", "磊", "洋", "艳", "勇", "军", "杰", "娟",
        "涛", "超", "明", "霞", "秀兰", "刚", "平", "燕", "辉", "玲", "桂英", "丹", "萍", "鹏", "华",
        "红", "玉兰", "飞", "桂兰", "英", "梅", "鑫", "波", "斌", "莉", "宇", "浩", "凯", "秀珍", "健",
        "俊", "帆", "雪", "帅", "慧", "旭", "宁", "婷", "玉梅", "龙", "林", "玉珍", "凤英", "晶", "欢",
        "玉英", "颖", "红梅", "佳", "倩", "阳", "建华", "亮", "成", "琴", "兰英", "畅", "建", "云", "洁",
        "峰", "建国", "建军", "柳", "淑珍", "春梅", "海燕", "晨", "冬梅", "秀荣", "瑞", "桂珍", "莹", "秀云",
        "桂荣", "志强", "秀梅", "丽娟", "婷婷", "玉华", "兵", "雷", "东", "琳", "雪梅", "淑兰", "丽丽", "玉",
        "秀芳", "欣", "淑英", "桂芳", "博", "丽华", "丹丹", "彬", "桂香", "坤", "想", "淑华", "荣", "秀华",
        "桂芝", "岩", "杨", "小红", "金凤", "文", "利", "楠", "红霞", "建平", "瑜", "桂花", "璐", "凤兰",
    ]

    last_names = [
        "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "诸", "卫", "蒋", "沈", "韩", "杨",
        "朱", "秦", "尤", "许", "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜",
        "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎",
        "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳", "酆", "鲍", "史", "唐",
        "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常",
        "乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄",
        "和", "穆", "萧", "尹", "姚", "邵", "湛", "汪", "祁", "毛", "禹", "狄", "米", "贝", "明", "臧",
        "计", "伏", "成", "戴", "谈", "宋", "茅", "庞", "熊", "纪", "舒", "屈", "项", "祝", "董", "粱",
        "杜", "阮", "蓝", "闵", "席", "季", "麻", "强", "贾", "路", "娄", "危", "江", "童", "颜", "郭",
        "梅", "盛", "林", "刁", "钟", "徐", "邱", "骆", "高", "夏", "蔡", "田", "樊", "胡", "凌", "霍",
        "虞", "万", "支", "柯", "咎", "管", "卢", "莫", "经", "房", "裘", "缪", "干", "解", "应", "宗",
        "丁", "宣", "贲", "邓", "郁", "单", "杭", "洪", "包", "诸", "左", "石", "崔", "吉", "钮", "龚",
        "程", "嵇", "邢", "滑", "裴", "陆", "荣", "翁", "荀", "羊", "於", "惠", "甄", "魏", "家", "封",
        "芮", "羿", "储", "靳", "汲", "邴", "糜", "松", "井", "段", "富", "巫", "乌", "焦", "巴", "弓",
        "牧", "隗", "山", "谷", "车", "侯", "宓", "蓬", "全", "郗", "班", "仰", "秋", "仲", "伊", "宫",
        "宁", "仇", "栾", "暴", "甘", "钭", "厉", "戎", "祖", "武", "符", "刘", "景", "詹", "束", "龙",
        "叶", "幸", "司", "韶", "郜", "黎", "蓟", "薄", "印", "宿", "白", "怀", "蒲", "邰", "从", "鄂",
        "索", "咸", "籍", "赖", "卓", "蔺", "屠", "蒙", "池", "乔", "阴", "郁", "胥", "能", "苍", "双",
        "闻", "莘", "党", "翟", "谭", "贡", "劳", "逄", "姬", "申", "扶", "堵", "冉", "宰", "郦", "雍",
        "却", "璩", "桑", "桂", "濮", "牛", "寿", "通", "边", "扈", "燕", "冀", "郏", "浦", "尚", "农",
        "温", "别", "庄", "晏", "柴", "翟", "阎", "充", "慕", "连", "茹", "习", "宦", "艾", "鱼", "容",
        "向", "古", "易", "慎", "戈", "廖", "庚", "终", "暨", "居", "衡", "步", "都", "耿", "满", "弘",
        "匡", "国", "文", "寇", "广", "禄", "阙", "东", "殴", "殳", "沃", "利", "蔚", "越", "夔", "隆",
        "师", "巩", "厍", "聂", "晁", "勾", "敖", "融", "冷", "訾", "辛", "阚", "那", "简", "饶", "空",
        "曾", "毋", "沙", "乜", "养", "鞠", "须", "丰", "巢", "关", "蒯", "相", "查", "后", "荆", "红",
        "游", "竺", "权", "逯", "盖", "益", "桓", "公", "万", "俟", "司", "马", "上", "官", "欧", "阳",
        "夏", "侯", "诸", "葛", "闻", "人", "东", "方", "赫", "连", "皇", "甫", "尉", "迟", "公", "羊",
        "澹", "台", "公", "冶", "宗", "政", "濮", "阳", "淳", "于", "单", "于", "太", "叔", "申", "屠",
        "公", "孙", "仲", "孙", "轩", "辕", "令", "狐", "钟", "离", "宇", "文", "长", "孙", "慕", "容",
        "鲜", "于", "闾", "丘", "司", "徒", "司", "空", "亓", "官", "司", "寇", "仉", "督", "子", "车",
        "颛", "孙", "端", "木", "巫", "马", "公", "西", "漆", "雕", "乐", "正", "壤", "驷", "公", "良",
        "拓", "跋", "夹", "谷", "宰", "父", "谷", "粱", "晋", "楚", "闫", "法", "汝", "鄢", "涂", "钦",
        "段", "干", "百", "里", "东", "郭", "南", "门", "呼", "延", "归", "海", "羊", "舌", "微", "生",
        "岳", "帅", "缑", "亢", "况", "后", "有", "琴", "梁", "丘", "左", "丘", "东", "门", "西", "门",
        "商", "牟", "佘", "佴", "伯", "赏", "南", "宫", "墨", "哈", "谯", "笪", "年", "爱", "阳", "佟",
    ]

    romanized_formats = (
        '{{first_romanized_name}} {{last_romanized_name}}',

代码语言:javascript
复制
)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 故事由来
  • Faker
    • 地址
      • 汽车
        • 银行
          • 条形码
            • 公司
              • 信用卡
                • 互联网
                  • 姓名
                    • 电话
                      • user_agent
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档