Ошибка декодирования при чтении Pandas .txt, которая происходит только на одном компьютере - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть разделенный запятыми файл .txt с французскими символами, такими как Vétérinaire и Désinfectant.

import pandas as pd
df = pd.read_csv('somefile.txt', sep=',', header=None, encoding='utf-8')

[Decode error - output not utf-8]

Я прочитал много постов вопросов и ответов (включая this ) и пробовал много разных кодировок, таких как 'latin1' и 'utf-16', они не работали.Однако я попытался запустить точно такой же сценарий на другом компьютере Windows 10 с аналогичной настройкой Python (все версии Python 3.6), он отлично работает на другом компьютере.

Редактировать: я пытался this .Использование encoding='cp1252' помогает для некоторых файлов .txt, которые я хочу импортировать, но для нескольких файлов .txt это приводит к следующей ошибке.

  File "C:\Program_Files_Extra\Anaconda3\lib\encodings\cp1252.py", line 15, in decode
return codecs.charmap_decode(input,errors,decoding_table)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 25: character maps to <undefined>

Редактировать: Попытка определить кодировку из chardet

import chardet 
import pandas as pd
test_txt = 'somefile.txt'

rawdata = open(test_txt, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']

print (charenc)

df = pd.read_csv(test_txt, sep=',', header=None, encoding=charenc)

print (df.head())

utf-8
[Decode error - output not utf-8]

1 Ответ

0 голосов
/ 14 февраля 2019

Ваша программа открывает файлы с кодировкой по умолчанию, которая не соответствует содержимому файла, который вы пытаетесь открыть.

Опция 1: Расшифруйте содержимое файла в pythonстроковые объекты:

rawdata = open(test_txt, 'rb', encoding='UTF8').read()

Вариант 2: Откройте файл CSV в редакторе, подобном Sublime Text, и сохраните его в кодировке utf-8, чтобы легко прочитать файл через панд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...