Python Throwing "'utf8' не может декодировать байт 0xd0 в позиции 0" Ошибка
Я пытаюсь загрузить текущий существующий листок и импортировать текстовый файл (значения, разделенные запятой), снимок экрана, показанный ниже,
Лист Excel:
![enter image description here]()
Текстовый файл:
![enter image description here]()
Я использую код, показанный ниже:
# importing necessary modules for performing the required operation
import glob
import csv
from openpyxl import load_workbook
import xlwt
#read the text file(s) using the CSV modules and read the dilimiters and quoutechar
for filename in glob.glob("E:\Scripting_Test\Phase1\*.txt"):
spamReader = csv.reader((open(filename, 'rb')), delimiter=',')
#read the excel file and using xlwt modules and set the active sheet
wb = load_workbook(filename=r"E:\Scripting_Test\SeqTem\Seq0001.xls")
ws = wb.worksheets(0)
#write the data that is in text file to excel file
for rowx, row in enumerate(spamReader):
for colx, value in enumerate(row):
ws.write(rowx, colx, value)
wb.save()
Появляется следующее сообщение об ошибке:
UnicodeDecodeError: кодек 'utf8' не может декодировать байт 0xd0 в позиции 0: недопустимый байт продолжения
Еще один вопрос: как вы можете указать python импортировать текстовые данные, начиная с столбца A3 в листе excel?
Ответы
Ответ 1
Кодировка Unicode меня смущает, но вы не можете заставить значение игнорировать недопустимые байты, говоря:
value = unicode(value, errors='ignore')
Вот отличный ответ для большего чтения в юникоде: unicode(). decode ('utf-8', 'ignore'), поднимающий UnicodeEncodeError
Ответ 2
openpyxl работает только с OOXML format (xlsx/xlsm).
Попробуйте сохранить формат xlsx вместо xls, используя Excel.
Если вы хотите конвертировать xls файл в xlsx в коде. Попробуйте один из вариантов из списка ниже:
- В Windows вы также можете использовать excelcnv инструмент для преобразования xls в xlxx.
- В Linux проверьте эту статью.
- Или вы можете преобразовать в xlsx, используя xlrd в Python. Проверьте этот Q & A.
Ответ 3
Привет Вы уверены, что у вас нет документа, который Спецификация UTF-8
Вы можете попробовать с помощью кодека BOM UTF-8. Обычно Windows + UTF + 8 может быть немного хлопотно. Хотя этот символ, который он показывает, может не быть спецификацией.