Я попробовал ваш код, используя Python 3.6.1 с простым str.replace(u'\ufeff', '')
, и, похоже, он работает.
Код проверен:
import os
from bs4 import BeautifulSoup
os.system('wget -q -O "boroughs.html" "https://en.wikipedia.org/wiki/List_of_London_boroughs"')
with open('boroughs.html', encoding='utf-8-sig') as fp:
soup = BeautifulSoup(fp,"lxml")
data = []
table = soup.find("table", { "class" : "wikitable sortable" })
table_body = table.find('tbody')
rows = table_body.find_all('tr')
for row in rows:
cols = row.find_all('td')
cols = [col.text.strip() for col in cols]
data.append([col.replace(u'\ufeff', '') for col in cols])
print(data)
Вывод перед заменой:
[[], ['Лай и Дагенхам [примечание 1]', '', '', 'Лай и Дагенхем
Лондонский городской совет »,« Труда »,« Ратуша, 1 Городская площадь »,
'13,93 ',' 194,352 ', '51 ° 33′39 ″ с.ш. 0 ° 09′21 ″ в.д. / ufeff51,5607 ° с.ш.
0,1557 ° E / ufeff / 51,5607; 0.1557 \ ufeff (Barking and Dagenham) ',' 25 '], ...]
Выход после замены:
[[], ['Лай и Дагенхам [примечание 1]', '', '', 'Лай и Дагенхем
Лондонский городской совет »,« Труда »,« Ратуша, 1 Городская площадь »,
'13,93 ',' 194,352 ', '51 ° 33′39 ″ с.ш. 0 ° 09′21 ″ в.д. / 51,5607 ° N0,1557 ° в.д. /
51,5607; 0,1557 (Лай и Дагенхем) ',' 25 '], ...]