嘗試幾種方法後,總結它,這是我做到了。以下是避免/從解析的HTML字符串中移除\ xa0個字符的兩種方法。
假設我們有原始的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。要正確刪除它們,我們可以使用兩種方法。
方法#1(推薦): 第一個是BeautifulSoup的get_text方法與條參數作爲真 因此,我們的代碼變爲:
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: 另一種選擇是使用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'
我也詳細介紹了這些方法on this blog你可能想參考。
'str.replace('\ xa0','')'? –
已經嘗試過,'ascii'編解碼器無法解碼位置0中的字節0xa0:序號不在範圍內(128) – zhuyxn
包含Unicode。使用'''''而不是'''s。 :-) – jpaugh