1
   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字符编码都不够精通,不知道我需要在哪里使用 Codecs 模块来更改用于呈现/追加/创建列表的字符集?

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

4

1 回答 1

0

如果您使用的是Python 2.x,请将以下行添加到您的代码中:

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

注意:如果您使用的是Python 3.x,reload 不是内置的,它是 imp.relaod(),因此需要添加导入才能使我的解决方案正常工作。我不在 3.x 中开发,所以我的建议是:

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

将它放在所有其他导入之前。

于 2015-12-23T03:22:16.470 回答