2015-06-29 4 views
-1

У меня есть некоторые HTML вроде этого:Удалить HTML ребенок внутри своего родителя

<ul> 
    <li>Item 1</li><br> 
    <li>Item 2</li><br> 
    <li>Item 3</li><br> 
</ul> 

<img src="someImage.png"><br> 

И я хотел бы, чтобы удалить <br> тегов из после <li> тегов и <img> тегов с помощью регулярных выражений, хотя я не уверен, как обойти это. HTML не остаются неизменными, так что изображение и списки могут быть в другом месте, или может быть другой контент, хотя там всегда будет <br> после </li> и </img>

Что регулярное выражение я мог бы использовать, чтобы решить эту проблему с питон? Благодарю.

Edit:

Я попытался использовать этот (<img.+?>)<br> для изображения, но это не сработало.

Я не хочу просто удалять ВСЕ теги <br>, потому что в HTML могут быть некоторые полезные, скорее я хотел бы иметь их после удаления элементов списка и изображений.

+0

вы можете разместить код, который вы еще пробовали до сих пор? – acutesoftware

+0

@acutesoftware просто сделал это. –

+0

Является ли 'br' всегда следующим братом после тегов' img' и 'li'? – hwnd

ответ

-1

Вот способ, чтобы удалить <br> из списков:

re.sub(r'</li>(\<br>)', '\1', string) 

И для изображений все равно.

re.sub(r'(<img.+?>)(\<br>)', '\1', string) 
+0

Вы протестировали их? –

+0

Да, они отлично работали. –

+0

Этот 're.sub (r ' (\
)', '', string)' дает мне этот вывод '

  • Пункт 3' –

  • 0

    Это один из способов, чтобы удалить br тегов:

    import re 
    print re.sub('<br>', "", '<li>Item 1</li><br>') 
    

    Если Есть много br тегов в документе вы должны хранить данные в переменном, как это:

    data = 'your full html document as a string' 
    print re.sub('<br>', "", data) 
    

    Тогда это удалит все теги br во всем документе data.

    Если вы хотите, чтобы удалить br тегов, которые после li тегов, то вы можете сделать это следующим образом:

    data = 'your full html document as a string' 
    print re.sub(r'^<li>\<br>', "", data) 
    
    +0

    В HTML могут быть другие элементы '
    ', которые я не хочу удалять, поскольку они не являются прямыми после списка или изображения. –

    +0

    @PavSidhu ok Я исправляю это один раз –

    0

    Это может быть решена без использования регулярных выражений (ссылка для вставки на легендарном регулярное выражение/html ответ здесь):

    the_string = '<p>Text we want to keep</p><br>' 
    the_string = the_string.rstrip('<br>') 
    
    Смежные вопросы