Создание словаря Python из HTML divs с использованием атрибута в качестве идентификаторов

#python #file #dictionary

#python #файл #словарь

Вопрос:

У меня есть следующие данные html / xml внутри файла, и я пытаюсь создать словарь из этих данных.

 <REUTERS TOPICS="YES" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" NEWID="1">
blah blah...
</REUTERS>
<REUTERS TOPICS="YES" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" NEWID="2">
blah blah...
</REUTERS>
<REUTERS TOPICS="YES" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" NEWID="3">
blah blah...
</REUTERS>
#many more like this...
  

Я пытаюсь создать словарь как

  mydict = {1:"blah blah...", 2: "blah blah...", 3: "blah blah...", etc}
  

Где каждый идентификационный номер в моем словаре соответствует атрибуту NEWID в элементе тега REUTERS.

Пока у меня есть этот код, но я понятия не имею, как использовать атрибут NEWID в качестве ключа для пары ключ-значение моего словаря.

 mydict = {} 
for reuters_file in os.listdir(reuters_folder):
    with open(reuters_folder reuters_file) as file:
    soup = BeautifulSoup(file, "lxml")
    content = str(soup)  
    val = content.split('<REUTERS')
    mydict[int(key)] = val
  

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

1. Зачем вы вообще используете BeautifulSoup , если вы просто собираетесь преобразовать его в строку?

2. key Должно быть NEWID ?

3. да, ключ должен быть значением NEWID

Ответ №1:

 from bs4 import BeautifulSoup

soup = BeautifulSoup(xml, 'lxml')
d = {}

for reuters in soup.find_all('reuters'):
    d[reuters.get('newid')] = reuters.text
  

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

1. Как бы вы создали словарь из пары ключ-значение?

2. в нем говорится, что xml не определен. Вы забыли импортировать для него зависимость?

3. Если вы запускаете скрипт из repl.it затем вам нужно будет добавить import lxml .

4. у меня уже есть import lxml. Я получаю сообщение об ошибке xml не определен

5. Вот xml содержимое для анализа. Это аналог soup = BeautifulSoup(file, "lxml") в вашем коде.