我在使用Python库从WikiData获取信息时遇到了麻烦。
我试图根据WikiData页面的ID来获取数据,例如" Q2" (地球)。
我正在考虑使用dict来存储通信[namepropriety] - > [值列表]但是现在我只是打印它们。
我正在使用this WikiData library并设法从中获得一些结果,但在某些情况下我无法弄清楚如何覆盖。
特别是我从一个合适的地方获得多个价值时遇到了问题,我采取了硬编码的方法,我认为这不是最好的方法。
我使用的库似乎比我以前使用过的代码更复杂,所以我可能错过了库提供的明显解决方案。
这是我目前的代码
import wikidata
idd = "Q2" # Earth
client = wikidata.client.Client()
entity = client.get(idd, load = True)
for x in (list(entity)): # Iterate over properties
prop = client.get(x.id, load = True)
print("\nPropriety ID:\t" + str(x.id) + "\tPropriety NAME:\t" + str(prop.label))
try:
if type(entity[prop]) is wikidata.entity.Entity:
print(entity[prop].label)
else:
print(entity[prop])
except Exception as e:
try:
param = str(e).split("unsupported type: ")[1].replace("'",'"')
d = json.loads(param)
print(d["value"]["amount"])
except:
print (e)
我很欣赏任何有关如何从单一礼仪或其他方式获得倍数价值以实现我的结果的建议!