Как добавить числовое значение с единицей измерения (например, 1500 кВт) с помощью функции WbQuantity (), безуспешно с помощью учебника - PullRequest
1 голос
/ 21 сентября 2019

Я создаю полуавтоматический инструмент в Python, использующий pywikibot, для импорта данных из базы данных TOP500 в Wikidata, следуя этому и этому учебному пособию.(Это мой первый раз программирование на Python).

Он работал нормально, пока скрипт не попытается зафиксировать числовое значение внутри единицы (например, Pleiades (Q2442043) потребляемая мощность (P2791) → 4407,00 кВт ).Сценарий анализирует числовое значение в единице измерения, затем единица измерения преобразуется в заданный оператор ( кВт киловатт (Q3320608) ).Тем не менее, сценарий выдает ошибку (это предупреждение, потому что я обрабатываю ошибки, используя try-кроме) при передаче модуля как URL (строка помощника сущности), а также оператор (QXXXXX):

WARNING: API error modification-failed: Illegal value: https://wikidata.org/wiki/Q79738
Traceback (most recent call last):
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/page.py", line 112, in handle
    func(self, *args, **kwargs)
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/page.py", line 4325, in addClaim
    self.repo.addClaim(self, claim, bot=bot, **kwargs)
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/site.py", line 1326, in callee
    return fn(self, *args, **kwargs)
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/site.py", line 7946, in addClaim
    data = req.submit()
  File "/mnt/c/Users/Davod/Documents/git/wikidata_top500/core/pywikibot/data/api.py", line 2080, in submit
    raise APIError(**result['error'])
pywikibot.data.api.APIError: modification-failed: Illegal value: https://wikidata.org/wiki/Q79738 [messages:[{'name': 'wikibase-validator-not-allowed', 'parameters': ['https://wikidata.org/wiki/Q79738'], 'html': {'*': 'Valor ilegal: <a class="external free" href="https://wikidata.org/wiki/Q79738">https://wikidata.org/wiki/Q79738</a>'}}]; help:See https://www.wikidata.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; for notice of API deprecations and breaking changes.]

Я загрузил мой проект на GitHub.Соответствующий исходный код находится в функции addClaim() , , строка 109 .

...