найти родительский тег данного текста по его позиции в HTML-строке - PullRequest
0 голосов
/ 20 марта 2019

Я использую Python для манипулирования строкой HTML.Я хочу найти родительский тег из заданного текста (начальное и конечное смещение текста известны) в html-строке.

например, рассмотрим следующую html-строку

<html><body><span id="1234">The Dormouse's story</span><body></head>

input is offset (33,43) то есть строка 'Соня' и родительский тег <span id="1234">

1 Ответ

1 голос
/ 20 марта 2019

Прямо здесь, на макушке моей головы, поскольку у вас есть смещение (которое, я думаю, вам, возможно, придется настроить, потому что мне пришлось использовать (28,48)),

  1. Создание подстроки на основе смещения.
  2. Разделить полную строку HTML, используя split(), используя строку смещения в качестве разделителя.
  3. Возьмите первую подстроку, созданную разделением, и разделите ее с помощью >.
  4. Последней и последней подстрокой в ​​этом списке подстрок является ваш родительский тег (поскольку разделенный список будет возвращать пустую строку, если разделитель находится в конце строки, которую вы разделяете):

     html_string = '<html><body><span id="1234">The Dormouse\'s story</span><body></head>'
     offset_string = html_string[28:48]
     tags_together = html_string.split(offset_string)[0]
     list_of_tags = tags_together.split('>')
     parent_tag = list_of_tags[len(list_of_tags)-2]
    

Обратите внимание, что вам не хватает '>', поэтому вам придется добавить его обратно, если это необходимо.

parent_tag = parent_tag + ">"

Кроме того, причина, по которой я поставил html_string в одинарные кавычки, заключается в том, что у вас уже есть двойные кавычки.

Это грубо и немного грубо, но это должно сделать работу. Я уверен, что существует библиотека python, которая может выполнить такую ​​задачу для вас. Вам просто нужно выглядеть достаточно усердно!

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

Теперь, когда я думаю об этом, использование регулярных выражений с вашим известным смещением также может дать вам теги ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...