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模块来更改用于显示/追加/创建的字符集的位置列出?
有人不仅可以帮我解释代码,还可以直接指出一些好的阅读材料来理解这类事情吗?
答案 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')
将其放在所有其他进口货物之前。