xmltodict: ExpatError: синтаксическая ошибка: строка 1, столбец 0, получение XML из QuickGO - PullRequest
0 голосов
/ 25 января 2019

Я немного сбит с толку ошибкой, которую я получаю из следующих сообщений

from future.standard_library import install_aliases
install_aliases()
from urllib.request import urlopen
import xmltodict

oboxml = urlopen('http://www.ebi.ac.uk/QuickGO/GTerm?id=GO:0003723&format=oboxml')
obo_dict = oboxml.read()
obo_dict_parse = xmltodict.parse(obo_dict)

, который возвращает ошибку:

ExpatError Traceback (последний вызов был последним) в 6 oboxml = urlopen ('http://www.ebi.ac.uk/QuickGO/GTerm?id=GO:0003723&format=oboxml') 7 obo_dict = oboxml.read () ----> 8 obo_dict_parse = xmltodict.parse (obo_dict)

* 328 parser.ParseFile (xml_input) Еще 329: -> 330 parser.Parse (xml_input, True) 331 возврат handler.item 332

ExpatError: синтаксическая ошибка: строка 1, столбец 0

XML-файл возвращается, поэтому он не пустой. Но я не уверен, почему парсер xml был бы несчастлив, особенно, когда я следую за учебным пособием * Я использую xmltodict 0.11.0-py36_1, установленный и обновленный через anaconda.

Любые указатели высоко ценится

* Следующая тетрадь: goatools https://link.springer.com/protocol/10.1007/978-1-4939-3743-1_16

1 Ответ

0 голосов
/ 25 января 2019

Из того, что я могу извлечь:

Quickgo не предоставляет формат XML.Он не указан как тип ответа в их API https://www.ebi.ac.uk/QuickGO/api/index.html#!/annotations/downloadLookupUsingGET

. Я попробовал альтернативный метод выборки, используя пакет Bioservices и его инструменты QuickGo.Кажется, этот пакет отклонился от документации, то есть когда однажды:

term = qgo.Term("GO:0000016", frmt="oboxml")

он больше не делает.Термин был заменен на Термины, и он больше не принимает 'frmt =' или 'format ='.

В настоящий момент я могу получить следующее:

from bioservices import QuickGO as qgo
qgo = qgo()
term = qgo.Terms("GO:0000016")
print(term, type(term))

, которое вернет список.

Требуется XML-файл для использования с пакетом goatools.Я отредактирую исходный вопрос, чтобы уточнить это в случае, если другие столкнутся с той же проблемой.

...