Python编码NLTK - ' charmap'编解码器无法对字符进行编码

时间:2015-12-23 03:15:00

标签: python character-encoding codec pypyodbc

   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>

我已经在这里查看了类似问题的其他一些答案,然后用Google搜索出了它的内容;但我对 Python 还是字符编码不够精通,知道我需要使用Codecs模块来更改用于显示/追加/创建的字符集的位置列出?

有人不仅可以帮我解释代码,还可以直接指出一些好的阅读材料来理解这类事情吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是 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')

将其放在所有其他进口货物之前。