Python Encoding NLTK - кодек 'charmap' не может кодировать символ

   import pypyodbc
   from pypyodbc import *
   import nltk 
   from nltk import *
   import csv
   import sys
   import codecs
   import re

   #connect to the database 
   conn = pypyodbc.connect('Driver={Microsoft Access Driver (*.Mdb)};\
          DBQ=C:\\TextData.mdb')

   #create a cursor to control the datbase with
   cur = conn.cursor()

   cur.execute('''SELECT Text FROM MessageCreationDate WHERE Tags LIKE 'GHS - %'; ''')
   TextSet = cur.fetchall()
   ghsWordList = []
   TextWords = list(TextSet)

   for row in TextWords :
       message = re.split('\W+',str(row))
       for eachword in message :
            if eachword.isalpha() :
               ghsWordList.append(eachword.lower())

   print(ghsWordList)

Когда я запускаю этот код, он дает мне ошибку:

'charmap' codec can't encode character '\u0161' in position 2742: character maps to <undefined>

Я посмотрел на ряд других ответов здесь на подобные вопросы, и погуглил до чертиков; однако я недостаточно хорошо разбираюсь в Python или в кодировке символов, чтобы знать, где мне нужно использовать модуль кодеков для изменения набора символов, используемого для представления / добавления / создания списка?

Может ли кто-нибудь не только помочь мне с кодом, но и указать мне несколько хороших материалов для чтения для понимания такого рода вещей?

1 ответ

Если вы используете Python 2.x, добавьте в свой код следующие строки:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

Примечание: если вы используете Python 3.x, перезагрузка не является встроенной, это imp.relaod(), поэтому для работы моего решения необходимо добавить импорт. Я не развиваюсь в 3.x, поэтому я предлагаю следующее:

from imp import reload
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

Поместите это впереди всего вашего другого импорта.

Другие вопросы по тегам