いくつかの方法を試した後、要約すると、これが私のやり方です。以下は、解析されたHTML文字列から\ xa0文字を回避/削除する2つの方法です。
次のような生のhtmlがあるとします。
raw_html = '<p>Dear Parent, </p><p><span style="font-size: 1rem;">This is a test message, </span><span style="font-size: 1rem;">kindly ignore it. </span></p><p><span style="font-size: 1rem;">Thanks</span></p>'
このHTML文字列を整理してみましょう。
from bs4 import BeautifulSoup
raw_html = '<p>Dear Parent, </p><p><span style="font-size: 1rem;">This is a test message, </span><span style="font-size: 1rem;">kindly ignore it. </span></p><p><span style="font-size: 1rem;">Thanks</span></p>'
text_string = BeautifulSoup(raw_html, "lxml").text
print text_string
#u'Dear Parent,\xa0This is a test message,\xa0kindly ignore it.\xa0Thanks'
上記のコードは、これらの文字\ xa0を文字列に生成します。それらを適切に削除するには、2つの方法を使用できます。
メソッド#1(推奨):
最初のメソッドは、BeautifulSoupのget_textメソッドで、ストリップ引数がTrueに設定されているため
、コードは次のようになります。
clean_text = BeautifulSoup(raw_html, "lxml").get_text(strip=True)
print clean_text
# Dear Parent,This is a test message,kindly ignore it.Thanks
方法2:
もう1つのオプションは、Pythonのライブラリunicodedataを使用することです
import unicodedata
text_string = BeautifulSoup(raw_html, "lxml").text
clean_text = unicodedata.normalize("NFKD",text_string)
print clean_text
# u'Dear Parent,This is a test message,kindly ignore it.Thanks'
これらの方法についても、このブログで詳しく説明していますので、参考にしてください。