我已经为此苦苦挣扎了一段时间,并且在让它在蓝色月亮中工作一次到彻底崩溃之间一直处于困境。
我的最终目标是用用户可以选择的地区/国家的随机城镇名称替换词典中的“!R”。或者举一个具体的例子,基本上是这样的事情:https://www.mithrilandmages.com/utilities/CityNames.php
开始简单地上网并将城镇名称列表粘贴到.csv中后,我意识到这将花费很长时间,并且远远不够详尽,并且为此设置了数据库。
因此,我尝试使用GeoCoder和GeoNames来使某项工作正常...但是我似乎无法使它正常工作,因为我希望它能够工作(或对此有效)。
我目前的尝试是一直使用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"
设置为国家/地区时发生故障,由于某种原因,它返回了South America
。即使我能解决这个问题,一直到进行4-5次查询的孩子们也不仅效率低下(最终花费大约10秒钟才能到达城镇,这意味着在进行50次查询时可能需要10分钟[和花了我200个学分;这是一个小程序,只有很少的人会使用,所以我一天不会花掉5万个查询,但这并不是很好的编码]),但它似乎更经常崩溃而不是(参见美国示例)。
我的问题是,基本上我是否缺少任何明显的东西,例如通过GeoNames或其他任何方式来选择随机城镇名称的直接方法。捆绑将近2gb的.txt文件显然不是一种选择。