При сохранении набора данных Pandas в Excel я столкнулся с
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 0: invalid continuation byte
Некоторое копание показало, что я могу собрать 3 символа ascii, и получающаяся строка, кажется, начинается с байта продолжения UTF-8. Очевидно, что в строке нет многобайтовых символов. Как лучше всего преодолеть это, чтобы все мои данные интерпретировались как символы ASCII?
Вот код Python, который демонстрирует, как проявляется продолжение байта
Python 3.7.1 (default, Dec 14 2018, 13:28:58)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> string_from_3_ascii_chars = chr(50) + chr(51) + chr(48)
>>> print(string_from_3_ascii_chars)
230
>>> print(string_from_3_ascii_chars.startswith(str(0xe6)))
True
>>>
2 ответа
В рассматриваемом примере str(0xe6)
принимает целое число 0xe6
(230
в десятичной записи) и вызывает repr(object)
для него. Это создает строку '230'
. string_from_3_ascii_chars
начинается с '230'
. startswith
подтверждает это, возвращая True
.
Это возможно, отсоединив энкодер и заменив его на свой энкодер.
- создайте файл примера в кодировке Latin-1 / ascii.
- открыть файл с кодировкой utf-8
- отсоединить кодировку и заменить на «Latin-1 / ascii»
- читать файл
Примечание. Этот метод изменяет права доступа к файлу. Таким образом, вы сможете читать, но не записывать в файл.
with open("/Desktop/temp/junk1",'wb') as f:
s="Hello Jalapeño".encode("latin-1")
f.write(s)
with open("/Desktop/temp/junk1",'r') as f:
b=f.detach()
f=io.TextIOWrapper(b,"latin-1")
print(f.read())
`
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.