Почему try: except: не работает для этой конкретной строки кода с python Wikipedia API? - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь выполнить этот очень короткий код, который был взят из моего более крупного кода, потому что у меня с ним были проблемы. Мне удалось воспроизвести проблему (возникла точно такая же ошибка).

ИСТОРИЯ ВОПРОСА: я просто пытаюсь получить первое предложение из этого поиска в Википедии. но поскольку слово, которое я ищу (кип, что по-голландски означает «курица») имеет множество значений или что-то в этом роде, я получаю сообщение об ошибке. Я хочу обойти эту ошибку, используя try: except: но он все равно продолжает отображать сообщение об ошибке.

вот код, который, похоже, просто не работает:

import wikipedia
wikipedia.set_lang('nl')

try: 
 summry = wikipedia.summary('kip', sentences=1)
 print(summry + "\n")
except: 
 print("error")

Я попытался заменить за исключением: с этим

except wikipedia.exceptions.DisambiguationError:

, но он все еще не работает :( он всегда отображает код ошибки без повторного ввода и затем печатает «error»

/opt/virtualenvs/python3/lib/python3.8/site-packages/wikipedia/wikipedia.py:389: 
GuessedAtParserWarning: No parser was explicitly specified, so I'm using the best available HTML 
parser for this system ("html5lib"). This usually isn't a problem, but if you run this code on 
another system, or in a different virtual environment, it may use a different parser and behave 
differently.

The code that caused this warning is on line 389 of the file 
/opt/virtualenvs/python3/lib/python3.8/site-packages/wikipedia/wikipedia.py. To get rid of this 
warning, pass the additional argument 'features="html5lib"' to the BeautifulSoup constructor.

lis = BeautifulSoup(html).find_all('li')
error

Я использую repl.it для программирования это

, если кто-нибудь знает, почему он все равно отображает ошибку, пожалуйста, дайте мне знать: D

1 Ответ

0 голосов
/ 26 мая 2020

Прежде всего, спасибо всем за комментарии: D это очень помогло

В конце концов, решение, которое сработало для меня, было вдохновлено комментарием Аскольда Ильвенто

хотя

with warnings.catch_warnings(): warnings.simplefilter("ignore")

не сработало, когда я его немного адаптировал, он выполнил свою работу!

это код, который решил проблему и позволил мне игнорировать то, что на самом деле было предупреждением (а не исключением) и перестаньте его отображать

import warnings

warnings.catch_warnings()
warnings.simplefilter("ignore") 

Я просто добавил это в начале скрипта, и он решил проблему: D еще раз все заслуги за этот код достаются Аскольду Ильвенто я просто пришлось добавить немного, чтобы он заработал

...