python的随机姓名和身份证讲解

python的造“假数据”神器-Faker库

Faker 是一个强大的工具,它可以帮助我们快速生成各种类型的虚拟数据,包括但不限于姓名、地址、电话号码、电子邮件、日期、文本、公司信息等 。它能够极大地提高我们开发和测试的效率,让我们专注于核心业务逻辑的实现,而不必为生成虚拟数据而烦恼。

安装与基本使用

(一)安装 Faker 库

通过pyton的pip命令,我们可以轻松安装Faker库

pip install Faker -i https://mirrors.aliyun.com/pypi/simple/

(二)Faker 库常用函数

分类

函数

个人信息

  • 全名name()
  • 名字first_name()
  • 姓氏last_name()
  • 男性名字male_first_name()
  • 女性名字female_first_name()
  • 性别sex()
  • 头衔prefix()
  • 后缀suffix()

联系方式

  • 电子邮箱email()
  • 电话号码phone_number()
  • 传真号码fax_number()

地址

  • 地址address()
  • 街道地址street_address()
  • 街道名称street_name()
  • 建筑号码building_number()
  • 城市city()
  • 州 / 省state()
  • 州 / 省缩写state_abbr()
  • 邮政编码postcode()
  • 国家country()
  • 国家代码country_code()

公司

  • 公司名称company()
  • 公司后缀company_suffix()
  • 工作职位job()

文本

  • 文本text()
  • 句子sentence()
  • 段落paragraph()
  • 单词word()
  • 单词列表words()
  • 句子列表sentences()
  • 段落列表paragraphs()

数字

  • 0 - 9 的数字random_digit()
  • 1 - 9 的数字random_digit_not_null()
  • 指定范围的整数random_int(min, max)
  • 指定位数的数字random_number(digits)

日期和时间

  • 随机日期date()
  • 日期时间date_time()
  • 时间time()
  • 未来日期future_date()
  • 未来日期时间future_datetime()
  • 过去日期past_date()
  • 过去日期时间past_datetime()

互联网地址信息

  • URL 地址url()
  • 域名domain_name()
  • IPv4 地址ipv4()
  • IPv6 地址ipv6()

身份识别

  • 社会安全号码ssn()
  • 身份证号码identity_card_number()

颜色

  • 颜色名称color_name()
  • RGB 颜色值rgb_color()
  • 十六进制颜色值hex_color()

金融信息

  • 信用卡号码credit_card_number()
  • 信用卡有效期credit_card_expire()
  • 完整信用卡信息credit_card_full()
  • 货币代码currency_code()
  • 比特币地址bitcoin_address()

文件

  • 文件名file_name()
  • 文件路径file_path(depth=1)
  • 文件扩展名file_extension()

交通类

  • 车牌号license_plate()
  • 航班号flight_number()

服装类

  • 服装品牌clothing_brand()
  • 服装尺码clothing_size()

食品类

  • 菜品名称dish_name()
  • 饮料名称drink_name()

教育类

  • 学校名称school_name()
  • 学位degree()
  • 课程名称course()

商业类

  • 产品名称product_name()
  • 价格price()
  • 条形码ean()

出版类

  • 书名book_title()
  • 作者author()

运动类

  • 运动项目sport()
  • 体育队名team_name()

音乐类

  • 歌曲名称song_name()
  • 音乐流派music_genre()

游戏类

  • 游戏名称game_name()
  • 游戏角色game_character()

宠物类

  • 宠物种类pet_name()
  • 宠物名字pet_type()

旅游类

  • 旅游景点tourist_attraction()
  • 酒店名称hotel_name()

艺术类

  • 艺术作品名称artwork_title()
  • 艺术风格art_style()

科技类

  • 软件名称software_name()
  • 电子产品名称electronic_product()

法律类

  • 法律条款legal_clause()
  • 案件类型case_type()

天文类

  • 星座名称constellation()
  • 天体名称celestial_body()

建筑类

  • 建筑风格architectural_style()
  • 建筑材料building_material()

能源类

  • 能源类型energy_type()
  • 能源公司名称energy_company()

医疗类

  • 疾病名称disease_name()
  • 药品名称medicine_name()

历史类

  • 历史事件historical_event()
  • 古代人物名字ancient_person_name()

地理类

  • 地理现象geographical_phenomenon()
  • 地形名称topographic_feature()

环保类

  • 环保项目名称environmental_project()
  • 可再生能源名称renewable_energy_source()

(三)创建 Faker 实例

安装好 Faker 库后,我们需要在 Python 代码中导入 Faker 类,并创建一个 Faker 实例,通过这个实例来调用各种生成虚拟数据的方法。示例代码如下:

from faker import Faker
fake = Faker()

1. locale 参数:

locale 参数用于指定生成数据的语言和地区设置,默认是‘en_US’表示美国英语。配置不同的地区会影响生成的数据的格式、内容和风格。

比如配置'fr_FR' 表示法国法语,'zh_CN' 表示中国汉语,zh_TW' 表示中国台湾繁体。也可以配置多个比如Faker(['zh_TW','zh_CN'])表示混合生成多语言数据。

示例:设置为几个不同地区后,随机生成的姓名和身份证号信息也不同

from faker import Faker
fake = Faker('zh_TW')
# 生成姓名
name = fake.name()
print(f"姓名: {name}")
# 生成身份证号
id_number = fake.ssn()
print(f"身份证号: {id_number}")
fake = Faker('zh_CN')
# 生成姓名
name = fake.name()
print(f"姓名: {name}")
# 生成身份证号
id_number = fake.ssn()
print(f"身份证号: {id_number}")
fake = Faker('fr_FR')
# 生成姓名
name = fake.name()
print(f"姓名: {name}")
# 生成身份证号
id_number = fake.ssn()
print(f"身份证号: {id_number}")

结果:

姓名: 李傑克
身份证号: M240888492
姓名: 李云
身份证号: 15010419940428325X
姓名: Louis Riou-Mahe
身份证号: 

Faker 的核心功能与示例

(一)生成个人信息

from faker import Faker
fake = Faker('zh_CN')
# 生成姓名
print(f"姓名: {fake.name()}")
# 生成性别
print(f"性别: {fake.random_element(elements=('男', '女'))}")
# 生成到岁之间的年龄
print(f"年龄: {fake.random_int(min=, max=)}")
# 生成身份证号
print(f"身份证号: {fake.ssn()}")

结果:

姓名: 赖建华
性别: 男
年龄: 
身份证号: 

(二)生成联系信息

# 生成手机号
print(f"手机号: { fake.phone_number()}")
# 生成邮箱
print(f"邮箱: {fake.email()}")
# 生成地址
print(f"地址: { fake.address()}")

结果:

手机号: 
邮箱: yanhou@example.com
地址: 云南省北镇县秀英赵街j座 

(三)生成网络相关信息

# 生成URL
print(f"URL: {fake.url()}")
# 生成IP地址
print(f"IP地址: {fake.ipv4()}")
# 生成域名
print(f"域名: {fake.domain_name()}")

结果:

URL: http://ping.com/
IP地址: 
域名: .cn

(四)生成日期和时间

# 生成随机日期
print(f"随机日期: {fake.date()}")
# 生成指定范围的日期,这里是近年内的日期
start_date = '-10y'
end_date = 'today'
print(f"近年内的随机日期: { fake.date_between(start_date=start_date, end_date=end_date)}")
# 生成随机时间
print(f"随机时间: {fake.time()}")
# 生成随机日期和时间
print(f"随机日期和时间: {fake.date_time()}")

结果:

随机日期: 
近年内的随机日期: 
随机时间: ::
随机日期和时间:  ::

(五)生成文本内容

在自然语言处理相关的应用中,如文本分类、情感分析等,需要大量的文本数据进行测试。Faker 可以生成随机的单词、句子、段落和文章,示例代码如下:

# 生成随机单词
print(f"随机单词: { fake.word()}")
# 生成包含5个单词的句子
print(f"包含5个单词的句子: {fake.sentence(nb_words=5)}")
# 生成包含3个句子的段落
print(f"包含3个句子的段落: {fake.paragraph(nb_sentences=3)}")
# 生成一篇文章,这里限制文章字符数为
print(f"文章: { fake.text(max_nb_chars=)}")

结果:

随机单词: 活动
包含5个单词的句子: 深圳目前点击留言出现质量.
包含3个句子的段落: 报告主要您的的人单位大学.生产有关虽然要求虽然一点完成.下载音乐非常发布生活位置登录不断.
文章: 有些个人记者这是会员最大工作.网上更多这么中国非常.下载说明东西精华电子怎么认为一直.
资料推荐手机下载这样美国觉得.认为在线自己中心.计划提供希望只是学生.
日本报告更新合作.任何国际可以都是工作游戏相关.回复音乐无法进入工作完全最大.
不是觉得全部我的.看到参加有关名称状态服务.出来这么她的怎么管理历史.
我们都是服务不断责任应该资源精华.文化个人名称为了.

高级用法与实际应用

(一)配合pandas库使用

通过将 Faker 生成的虚拟数据整合到 pandas 的 DataFrame 结构中,我们可以方便地进行数据清洗、转换和分析并存为excel表等操作。示例代码如下:

from faker import Faker
import pandas as pd
faker = Faker('zh_CN')
data = []
for _ in range):
    name = faker.name()
    age = faker.random_int(min=, max=)
    phone_number = faker.phone_number()
    address = faker.address()
data.append([name, age, phone_number, address])
df = pd.DataFrame(data, columns=['name', 'age', 'phone', 'address'])
df.to_excel('data.xlsx', index=False)

(二)自定义数据生成

Faker 允许我们创建自定义提供者,以生成特定类型的虚拟数据,满足一些特殊的需求。创建自定义提供者的方法是继承BaseProvider类,并在子类中定义自定义的数据生成方法。示例代码如下:

from faker import Faker
from faker.providers import BaseProvider
# 创建自定义提供者
class CustomProvider(BaseProvider):
def custom_product(self):
products = ['手机', '电脑', '平板', '耳机']
return self.random_element(products)
# 创建Faker实例
fake = Faker('zh_CN')
# 添加自定义提供者
fake.add_provider(CustomProvider)
# 使用自定义提供者生成数据
product = fake.custom_product()
print(f"自定义产品: {product}")

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

原文链接:,转发请注明来源!