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 (как предложено в посте Мартина Питера)?

0 ответов

Другие вопросы по тегам