根据国家随机抽取城镇名称

2024-06-14 11:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为这个问题挣扎了一段时间了,我在偶尔让它工作和彻底崩溃之间徘徊。在

我的最终目标是取代“!字典中的R是一个随机的城镇名称,来自一个地区/国家,用户可以从中选择。或者举一个具体的例子,基本上是这样的:https://www.mithrilandmages.com/utilities/CityNames.php

在开始简单地上网并将城镇名称的列表复制到.csv后,我意识到这需要很长的时间,而且还不够详尽,而且已经为此建立了数据库。在

所以我试着用GeoCoderGeoNames让它工作起来……但是我似乎不能让它像我想要的那样工作(或者效率很高)。在

链接到脚本和代码https://github.com/Araxiel/CK2-Province_Set-Upper/blob/abandoned/1.3.0/Source/_workbench/databases.py

我当前的尝试是一直使用children直到最小的子级,但是它不太可靠,而且查询需要一段时间。此外,我似乎找不到像United States这样的名称。 我能找到的所有信息都是返回指定位置的具体长度或IP地址,但这与我要查找的相差甚远。我看到了一个叫做“Faker”的图书馆,但我很确定这也不是我要找的,尤其是我找不到任何关于它的数据库从哪里获取信息的文档。在

我正准备放弃尝试创建一个将单词组合在一起的RNG名称生成器。在

编辑:基本上,我当前的尝试是。。。在

    def get_towns(country):
        import geocoder
        global geonames_username
        a = geocoder.geonames(country, key=geonames_username)
        b = geocoder.geonames(a.geonames_id, key=geonames_username, method='children')
        import random
        b_r = random.choice(b)
        c = geocoder.geonames(b_r.geonames_id, key=geonames_username, method='children')
        [...etc...]

…当我试图将"United States"作为country输入时,由于某些原因它返回South America。即使我能解决这个问题,对4-5个问题的孩子来说,不仅效率极低(最终到达城镇大约需要10秒,这意味着50个查询可能需要10分钟[并花费我200个学分;这是一个很小的程序,只有少数人会使用,所以我不会一天用尽5万个查询,但这不是一个好的编码]),但它似乎也经常崩溃(见美国的例子)。 我的问题基本上是,是否有什么明显的缺失,比如通过地名或其他任何方式直接获得随机城镇名称的方法。而且,捆绑近2gb的.txt文件显然不是一个选择。在


Tags: keyhttpsimport名称com数据库usernamecountry