2017-01-31 2 views
0

мой код базируется на коде по адресу: https://rstudio-pubs-static.s3.amazonaws.com/79360_850b2a69980c4488b1db95987a24867a.htmlAllocation Python Скрытого Дирихле Stopped_tokens Ошибки

Я могу запустить мою программу с меньшим количеством файлов, однако, когда я начинаю в большее количество файлов около 1000, то я получить эту ошибку:

ReadWrite.py:59: UnicodeWarning: Unicode равно сравнение не удалось преобразовать оба аргумента в Unicode - интерпретировать их как неравные stopped_tokens = [I для I в жетонах, если не я в en_stop]

Мне было интересно, если кто-то столкнулся с этим раньше или если есть идея, как исправить эту ошибку.

ответ

0

Похоже, вы пытаетесь сравнить переменные разных типов в понимании списка. en_stop содержит переменные Unicode. Я думаю, что токены, которые вы читаете из файлов, имеют кодировку типа utf-8, cp1251 и т. Д. Вы должны попытаться определить, какая кодировка у ваших токенов. Вы можете сделать это следующим образом:

encoding = 'utf-8' # assign name like 'utf-8', 'cp1251', etc. 
string = tokens[0] 
try: 
    string.decode(encoding) 
    print 'string is {}'.format(encoding) 
except UnicodeError: 
    print 'string is not {}'.format(encoding) 

Если вы нашли правильную кодировку, вы можете получить stopped_tokens таким образом:

stopped_tokens = [i for i in tokens if not unicode(i, encoding) in en_stop] 

unicode(i, encoding) необходимо преобразовать маркеры в юникод представления в списке вашего понимания.

+0

Я принял ваш совет, и я проверяю, чтобы у меня были файлы utf-8. Однако, когда я запускаю изменения кода, вы предложили изменить мою ошибку в UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xe2 в позиции 2: порядковый номер не в диапазоне (128). Это потому, что я сделал файлы в utf-8? –

Смежные вопросы