web-dev-qa-db-ja.com

</br>を最終行に変換

BeautifulSoupを使用してテキストを抽出しようとしています。この目的のためにget_text()関数を使用しています。

私の問題は、テキストに</br>タグが含まれていることと、それらを終了行に変換する必要があることです。これどうやってするの?

33
MBZ

正規表現でうまくいくはずです。

import re
s = re.sub('<br\s*?>', '\n', yourTextHere)

お役に立てれば!

5
mbinette

BeautifulSoupオブジェクト自体、またはその任意の要素を使用して、これを行うことができます。

for br in soup.find_all("br"):
    br.replace_with("\n")
57
Ian Mackinnon

公式ドキュメント が言うように:

テキストのビットを結合するために使用する文字列を指定できます:soup.get_text( "\ n")

34
Guts

タグを\ nで置き換える代わりに、重要なすべてのタグの最後に\ nを追加する方がよい場合があります。

@petezurichからリストを盗むには:

for elem in soup.find_all(["a", "p", "div", "h3", "br"]):
    elem.append('\n')
0
Zusukar

Ianとdividebyzeroの投稿/コメントに追加すると、これを行うことでmanyタグを効率的にフィルタリング/置換できます。

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