python生成随机手机号、姓名、地址、身份证号构建测试数据

1. chinese-id-generator

如果需要专门生成符合规则的中国身份证号,可以使用 [chinese-id-generator] 库。

安装

pip install chinese-id-generator

示例代码

from faker import Faker
from chinese_id_generator import Generator

# 初始化 Faker 对象
fake = Faker("zh_CN")

# 初始化身份证生成器
id_generator = Generator()

# 生成随机姓名
name = fake.name()

# 生成随机手机号
phone_number = fake.phone_number()

# 生成随机地址
address = fake.address().strip()

# 生成随机身份证号
id_number = id_generator.generate()

# 输出结果
print(f"姓名: {name}")
print(f"手机号: {phone_number}")
print(f"地址: {address}")
print(f"身份证号: {id_number}")

2. faker

是一个功能强大的库,用于生成各种类型的伪造数据,包括姓名、地址、电话号码等。它支持多种语言和地区。

安装

pip install faker
  • fake.name():生成随机中文姓名。
  • fake.phone_number():生成随机中国大陆手机号。
  • fake.address():生成随机详细地址。
  • 身份证号需要自己实现校验码逻辑。

示例代码:

from faker import Faker

# 初始化 Faker 对象,指定区域为中国
fake = Faker("zh_CN")

# 生成随机姓名
name = fake.name()

# 生成随机手机号
phone_number = fake.phone_number()

# 生成随机地址
address = fake.address()

# 生成随机身份证号(需要自定义扩展)
def generate_random_id_number():
    from datetime import datetime, timedelta
    import random
    
    # 地区码(示例数据)
    area_codes = ["110105", "310101", "440106", "510104", "330102"]
    area_code = random.choice(area_codes)
    
    # 随机出生日期(1950-2020年间的日期)
    birth_date = (datetime(1950, 1, 1) + timedelta(days=random.randint(0, 25567))).strftime("%Y%m%d")
    
    # 随机序列号
    sequence = f"{random.randint(1, 999):03d}"
    
    # 校验码计算
    weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    check_codes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
    id_17 = area_code + birth_date + sequence
    sum_weight = sum(int(id_17[i]) * weights[i] for i in range(17))
    check_code = check_codes[sum_weight % 11]
    
    return id_17 + check_code

id_number = generate_random_id_number()
    # 输出结果
    print(f"姓名: {name}")
    print(f"手机号: {phone_number}")
    print(f"地址: {address.strip()}")
    print(f"身份证号: {id_number}")

3. mimesis

是另一个功能丰富的库,支持生成各种伪造数据,并且性能较高。
安装

pip install mimesis
  • Person(Locale.ZH):生成随机中文姓名和手机号。
  • Address(Locale.ZH):生成随机地址。
  • 身份证号需要自己实现校验码逻辑。
    示例代码
from mimesis import Person, Address
from mimesis.locales import Locale
import random

# 初始化 Person 和 Address 对象,指定区域为中国
person = Person(Locale.ZH)
address = Address(Locale.ZH)

# 生成随机姓名
name = person.full_name()

# 生成随机手机号
phone_number = person.telephone()

# 生成随机地址
address_detail = address.address()

# 生成随机身份证号(需要自定义扩展)
def generate_random_id_number():
    # 地区码(示例数据)
    area_codes = ["110105", "310101", "440106", "510104", "330102"]
    area_code = random.choice(area_codes)
    
    # 随机出生日期(1950-2020年间的日期)
    birth_date = f"{random.randint(1950, 2020)}{random.randint(1, 12):02d}{random.randint(1, 28):02d}"
    
    # 随机序列号
    sequence = f"{random.randint(1, 999):03d}"
    
    # 校验码计算
    weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    check_codes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
    id_17 = area_code + birth_date + sequence
    sum_weight = sum(int(id_17[i]) * weights[i] for i in range(17))
    check_code = check_codes[sum_weight % 11]
    
    return id_17 + check_code

id_number = generate_random_id_number()
    # 输出结果
    print(f"姓名: {name}")
    print(f"手机号: {phone_number}")
    print(f"地址: {address_detail}")
    print(f"身份证号: {id_number}")

注: 在faker和mimesis库中生成身份证号码部分都可以使用chinese-id-generator生成

from chinese_id_generator import Generator
id_number = id_generator.generate()
print(f"身份证号: {id_number}")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容