lxst
@lxst
Студент программист

Как правильно сформулировать регулярное выражение для поиска xml тегов с возможными атрибутами?

Моя цель состоит в том что бы определить все теги которые есть в xml в файле, с этим проблем не возникло.
tags = re.findall(r'<\/?\w*>', text) указав такое регулярное выражение, позже заметил что теги с атрибутами не находит, оно и понятно почему.
Попробовал сделать таким образом:
tags = re.findall(r'<(\/?\w*(\s\w*="\w*")?)>', text)
но происходит какая-то каша, буду благодарен если исправите меня.
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
<\/?[\w\s'\"=]*>
Просто перебрать все символы, которые могут встречаться в теге. Но, присоединюсь, это лучше делать специальными библиотеками

Тот же bs4 прекрасно справится
soup = BeautifulSoup(xml, 'lxml')
print([tag.name for tag in soup.find_all()])


Либо через стандартный xml
tree = ET.ElementTree(ET.fromstring(xml))
for elem in tree.iter():
    print(elem.tag)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
karabanov
@karabanov
Системный администратор
Не стоит парсить структурированные данные. Есть библиотеки для работы с XML.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы