Как я могу получить имя атрибута тега с помощью BeautifulSoup

#python #python-3.x #beautifulsoup

#python #python-3.x #beautifulsoup

Вопрос:

Я пытаюсь прочитать несколько строк из файла с аннотациями.

Строка выглядит так:

 lin1 = '9272171 <category="SpecificDisease1">Adult onset globoid cell leukodystrophy</category> (<category="SpecificDisease">Krabbe disease</category>): analysis of galactosylceramidase cDNA from four Japanese patients. This difference in mutation sites may affect the clinical features of <category="SpecificDisease2">GLD</category> . '
 

Я могу получать теги с помощью этого кода:

 from bs4 import BeautifulSoup
soup = BeautifulSoup(lin1)
s1 = soup.find_all('category')
for tag in s1:
    print (tag)
 

С принтами

 <category>Adult onset globoid cell leukodystrophy</category>
<category>Krabbe disease</category>
<category>GLD</category>
 

Ожидаемый результат следующий:

 SpecificDisease1 Adult onset globoid cell leukodystrophy 
SpecificDisease Krabbe disease</category>
SpecificDisease2 GLD 
 

Я не могу получить много от https://www.crummy.com/software/BeautifulSoup/bs3/documentation.html .
Не могли бы вы помочь, какие изменения я должен внести в свой код.
Я тоже согласен с подходом, не связанным с BeautifulSoup, но что-то эффективное.
Спасибо.

Комментарии:

1. Это допустимый HTML / XML? Я не думаю, что что-либо может идти сразу после имен тегов.

2. Не HTML / xml-файл. Обычный файл, но с тегами категорий.

Ответ №1:

вы можете использовать html.parser. Способ его использования — импортировать класс HTMLParser из модуля и создать класс, который наследуется от HTMLParser, как описано в связанной документации.