почему я не могу реализовать функцию декодирования в строку? - PullRequest
0 голосов
/ 18 января 2019

Я исследую набор данных и повторно запускаю код моего коллеги.При маркировке текстовых данных код, показанный ниже, не работает на моем macbook, однако, хорошо работал на компьютере моего коллеги. Вот код.

Я не знаю, какая у него версия, но моя - python3.6.Это проблема разных версий?

s=title+' '+author+' '+text
 tokens=word_tokenize(s.decode('ascii','ignore').lower())
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-e50403f82604> in <module>
     10         flushPrint(m/100)#208
     11     s=title+' '+author+' '+text
---> 12     tokens=word_tokenize(s.decode('ascii','ignore').lower())
     13     tokens = [z for z in tokens if not z in stopset and len(z)>1]
     14     k=[]

AttributeError: 'str' object has no attribute 'decode'

1 Ответ

0 голосов
/ 18 января 2019

Скорее всего, проблема связана с изменениями между python2 и python3

В python2

  • '' имеет тип str и, следовательно, поддерживает ''.decode()
  • u'' относится к типу unicode и поэтому поддерживает u''.encode()

В python3 все наоборот

  • '' относится к типу unicode и поэтому поддерживает ''.encode()
  • u'' имеет тип byte и, следовательно, поддерживает u''.decode()

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

s = title + b' ' + author + b' ' + text

просто прибегнуть к питону 2:)

...