Python 生成模拟地址数据:Faker之外的备选库

承接上一篇《Python Faker库入门》,很多同学问:Faker地址是虚构的,有没有其他库可以生成地址?有些场景需要真实行政区划、省市区联动,甚至真实街道,下面整理几款常用库,附带简单示例。

1. china-area-data(纯行政区划数据,推荐国内场景)

特点 :不是生成器,是国内省/市/区/乡镇静态字典数据源 ,数据来自国标行政区划,全部真实存在,没有虚构地址。

适合:生成合规的省市区下拉、做测试数据时保证省市区真实联动,缺点没有街道、门牌号。

需要自己搭配随机函数抽取数据。

安装

bash 复制代码
pip install china-area-data

使用示例

python 复制代码
import random
from china_area_data import area_data

# 获取所有省份
provinces = area_data["86"]
province_code, province_name = random.choice(list(provinces.items()))

# 获取该省份下所有城市
cities = area_data[province_code]
city_code, city_name = random.choice(list(cities.items()))

# 获取城市下所有区县
districts = area_data[city_code]
district_code, district_name = random.choice(list(districts.items()))

address = f"{province_name}{city_name}{district_name}"
print(address)

优点:省市区一定真实;缺点:缺少详细街道,需要自己补充街道词库。

2. pypinyin + 本地地址词库(自定义方案)

不属于地址专用库,思路:自己维护一份街道、小区名字列表,配合上面china-area-data,拼接完整地址。

适合高度定制化测试数据,完全可控。

3. geonamescache(全球地理数据)

特点 :基于 GeoNames 开放地理数据库,可以获取全球城市、地区名称,真实地名,支持多国家。

适合:需要海外地址、城市名;国内数据覆盖一般,没有精细区县街道。

安装

bash 复制代码
pip install geonamescache

示例

python 复制代码
import geonamescache
import random

gc = geonamescache.GeonamesCache()
cities = gc.get_cities()
city_info = random.choice(list(cities.values()))
print(city_info["name"], city_info["countrycode"])

4. mimesis(对标Faker,轻量替代)

Mimesis 是 Faker 强有力替代品,速度更快,内置多语言地址信息,支持中文。

和Faker一样:地址是虚构格式,不是真实存在地址,只是格式合法。

安装

bash 复制代码
pip install mimesis

中文地址示例

python 复制代码
from mimesis import Person, Address
from mimesis.locales import Locale

address = Address(Locale.ZH_CN)
person = Person(Locale.ZH_CN)

print(address.province())
print(address.city())
print(address.district())
print(address.address())
print(person.full_name())

优势:性能比Faker高,包体积更小;缺点中文精细度略弱于Faker。

5. fake2db(直接生成数据库测试数据)

底层封装了Faker/Mimesis,一键直接往MySQL/SQLite等数据库批量插入,支持地址等字段。

适合不想手写循环插入数据库的场景。

bash 复制代码
pip install fake2db

6. 第三方API方案(非Python库,备选)

如果需要真实可校验地址,库基本都做不到,可以调用公开地址API:

  • 高德/百度地图开放平台行政区域查询接口(获取真实省市区)

注意:有调用额度限制,大批量测试数据不推荐。

各库对比总结

库 地址真实性 国内支持 街道门牌号 适用场景
Faker 虚构 ✅较好 ✅有 快速造测试数据
Mimesis 虚构 ✅一般 ✅有 高性能mock数据
china-area-data 真实省市区 ✅很强 ❌无 省市区联动测试
geonamescache 真实城市 ❌弱 ❌无 海外地理数据

选型建议

  1. 只需要省市区真实存在 :优先 china-area-data,自己拼接街道词库;
  2. 只要格式对,不需要真实地址 :Mimesis 可以作为Faker平替;
  3. 需要全球地址:geonamescache;
  4. 大批量直接写入数据库:fake2db。

常见坑提醒

  1. china-area-data 只有行政区划,没有街道小区,不能直接生成完整地址;
  2. Mimesis/Faker 类生成器,地址只是"看起来像",不能用于地址校验;
  3. 国内精细街道数据属于资源,没有免费Python库自带完整真实街道库。
相关推荐
2301_780789662 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T3 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路3 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003963 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_3 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
星融元asterfusion4 小时前
工业网络升级实战:100G 双轨 Leaf-Spine 架构破解高并发出货网络瓶颈
网络·架构·spine
Da Da 泓4 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
quantdash_cc4 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl4 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
BIBI20495 小时前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践