2015-09-09 3 views
-1

В коды ниже печати данных:UnicodeDecodeError: «ASCII» кодек не может декодировать байт - NLTK

f = codecs.open('scrapeddata.csv', 'r') 
data = f.read() 
print data 

данных выглядит следующим образом:

Foul by Fabian Sch�r (Switzerland).  Wayne Rooney (England) wins a free kick in the attacking half.  Attempt missed. Xherdan Shaqiri (Switzerland) right footed shot from outside the box is high and wide to the right. Assisted by Josip Drmic.  Booking  James Milner (England) is shown the yellow card for a bad foul.  Stephan Lichtsteiner (Switzerland) wins a free kick in the defensive half.  Foul by James Milner (England).  Offside, Switzerland. G�khan Inler tries a through ball, but Xherdan Shaqiri is caught offside. 

Затем я пытаюсь сделать простой анализ частоты слов со следующими кодами:

from nltk import FreqDist, sent_tokenize, word_tokenize 

data = word_tokenize(data) 
freq = FreqDist(data) 

freq 

Это возвращает:

----> 3 data = word_tokenize(data) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0x94 in position 14: ordinal not in range(128) 

Любая помощь?

+0

Какая кодировка вводится с помощью? Python предполагает, что это ASCII и задыхается, когда осознает, что это не так. – icktoofay

+0

Unicode (UTF-8) – kevin

+0

python 2 в беспорядочной поддержке юникода было достаточным мотивом для перехода на python 3. Если python 3 - это опция, я бы порекомендовал вам пойти по этому маршруту. –

ответ

0

Оригинальные данные были собраны с помощью веб-соскабливания. Поэтому я изменил способ сохранения исходных данных в csv и исправил ошибку ascii.

data = [' scrapped data here'] 

w = csv.writer(open('scrapeddata.csv', 'wb')) 

for sentence in data: 
    w.writerow([sentence.encode('ascii','ignore')]) 
1

Обеспечьте явное кодирование при открытии файла. Вы сказали, что UTF-8, так что скажите Python:

f = codecs.open('scrapeddata.csv', 'r', 'utf-8') 
data = f.read() 
Смежные вопросы