Nachdem ich mehrere Methoden ausprobiert habe, habe ich es folgendermaßen gemacht. Im Folgenden werden zwei Möglichkeiten zur Vermeidung/Entfernung von \xa0 Zeichen aus der geparsten HTML-Zeichenkette.
Nehmen wir an, wir haben unser rohes html wie folgt:
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>'
Versuchen wir also, diese HTML-Zeichenkette zu bereinigen:
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'
Der obige Code erzeugt diese Zeichen \xa0 in der Zeichenkette. Um sie richtig zu entfernen, gibt es zwei Möglichkeiten.
Methode # 1 (empfohlen): Die erste ist die von BeautifulSoup get_text Methode mit Strip-Argument als True Unser Code wird also:
clean_text = BeautifulSoup(raw_html, "lxml").get_text(strip=True)
print clean_text
# Dear Parent,This is a test message,kindly ignore it.Thanks
Methode # 2: Die andere Möglichkeit ist die Verwendung der Python-Bibliothek 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'
Ich habe auch diese Methoden ausführlich beschrieben in diesem Blog auf die Sie sich vielleicht beziehen möchten.