2015-02-04 3 views
2

Я попытался прочитать мой набор данных в текстовом формате, используя pandas. Однако некоторые символы не кодируются правильно. Я получил ??? для апострофа.pandas read_csv encoding weird character

Что нужно сделать для правильного кодирования файла? Я попытался

  • encoding = "utf8", но я получил UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 2044: unexpected end of data.

  • encoding = "latin1", но это дало мне много?

  • encoding = "ISO-8859-1" or "ISO-8859-2", но это также дало мне так же, как без кодирования ...

Когда я открываю мои данные в возвышенном, я получил этот знак â € ™.

ОБНОВЛЕНО: Но когда я достигаю запись с помощью LOC я получил что-то вроде \ u0102 \ u02d8 \ XE2 \ x82 \ u0179 \ xc2 \ u015, \ u0102 \ u02d8 \ XE2 \ x82 \ u0179 \ XE2 \ x84 \ u02d8

+0

Вам нужно знать, в какой кодировке находится файл. Где вы взяли файл? – BrenBarn

+0

вы пробовали ISO-8859-2? –

+0

@ AndyHayden Да, я сделал – user3362840

ответ

1

вы можете быть в состоянии determine the encoding с chardet:

$ pip install chardet 

>>> import urllib 
>>> rawdata = urllib.urlopen('http://yahoo.co.jp/').read() 
>>> import chardet 
>>> chardet.detect(rawdata) 
{'encoding': 'EUC-JP', 'confidence': 0.99} 

основное использование также показывает, как вы можете использовать это, чтобы вывести кодировку из больших файлов, например, слишком большие файлы для чтения в память - он будет читать файл, пока он не будет достаточно уверен в кодировке.


По this answer вы должны попробовать encoding="ISO-8859-2":

Я думаю, что ваш вклад кодируется как ISO-8859-2, который содержит в качестве 0xC3.


Примечание: Sublime не может вывести кодировку правильно либо, так что вы должны принять это выход с щепоткой соли, то лучше проконсультироваться с вашим поставщиком (там, где вы получаете файл) какова фактическая кодировка ...

+0

Еще не решил проблему. – user3362840

+0

@ пользователь3362840 попробуйте chardet :) –