Вопрос по beautifulsoup – Конвертировать </ br> в конец строки

24

Я пытаюсь извлечь некоторый текст, используяBeautifulSoup, Я'м используюget_text() функция для этой цели.

Моя проблема в том, что текст содержит<br> теги и мне нужно преобразовать их в конец строки. как я могу это сделать?

Ваш Ответ

4   ответа
0

Добавление к Янус и делисьбызероS пост / комментарии вы можете сделать это, чтобы эффективно фильтровать / заменятьмного теги за один раз:

for elem in soup.find_all(["a", "p", "div", "h3", "br"]):
    elem.replace_with(elem.text + "\n\n")
5

Регулярное выражение должно делать свое дело.

import re
s = re.sub('', '\n', yourTextHere)

Надеюсь это поможет!

21

Какофициальный документ говорит:

Вы можете указать строку, которая будет использоваться для объединения фрагментов текста: soup.get_text ("«)

Это должен быть принятый ответ. Reinderien
Кажется, что "биты текста " это слова, а не строки, так что это добавило бы новую строку между каждыми 2 словами. Sasha
54

Вы можете сделать это, используя сам объект BeautifulSoup или любой его элемент:

for br in soup.find_all("br"):
    br.replace_with("\n")
Преимущество этого ответа в том, что вы можете позвонитьsoup.text впоследствии, чтобы удалить другие теги HTML, в то время как принятый в настоящее время ответ неЯ не могу предоставить такую возможность. the
Остерегайтесь этого, вы можете потерять часть содержимого непреднамеренно. Возможно, вам нужно сделать что-то вродеbr.replace_with("\n" + br.text), Этот тег злой ... dividebyzero

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