Python 3 Mojibake - FTFY не исправляет ошибки
Я анализирую текст, скопированный с этого сайта.(NbIt позволяет повторно использовать контент под лицензией OGL)
Существует проблема с некоторыми кодировками - с текстом, скопированным и вставленным из MS Office.
Это называется MojiBake (см. Этот пост) и ответ Martijn Peters.
Я использовал FTFY в своем коде Python 3, который следует, но строка
new_contents = ftfy.fix_encoding(содержимое).replace('_', ' ')
Похоже, не решить проблему. Первоначально я вызвал метод FTFY.fix_text, как предложил Матейн, но это не сработало, поэтому я попытался исправить fix_encoding().
from bs4 import BeautifulSoup
import csv
import ftfy
outfile = open('sicc_file.csv', 'w')
with open('cleanfile.html', 'rb') as html:
soup = BeautifulSoup(html, "html.parser")
#soup = BeautifulSoup(open("Scottish Information Commissioner decisions.webarchive"), "html.parser")
myData = [['decision_no', 'applicant', 'authority', 'description', 'decision', 'issued_date', 'link', 'foisa', 'eir']]
for decision in soup.find_all('tr', {'class': 'tableItem'}):
this_data = []
for cell in decision.find_all('td'):
if cell.has_attr('href'):
#print('True')
this_data.append(cell.href)
elif cell.text.strip() !="":
contents = cell.text.strip()
#print (contents)
new_contents = ftfy.fix_encoding(contents).replace('_', ' ')
this_data.append(new_contents)
else:
this_data.append ('')
with outfile:
writer = csv.writer(outfile)
writer.writerows(myData)
outfile.close()
Когда код выполняет выполнение, запись данных завершается с ошибкой.
Traceback (most recent call last):
File "/Users/ian/development/SICcer/scrape_downloaded.py", line 43, in <module>
writer.writerows(myData)
UnicodeEncodeError: 'ascii' codec can't encode character '\u2013' in position 68: ordinal not in range(128)
У кого-нибудь есть предположение, почему Моджибаке пережил исправление FTFY (как предложено в посте Мартина Питера)?