Python编码NLTK-';charmap';编解码器可以';t编码字符
当我运行此代码时,它会给我一个错误:Python编码NLTK-';charmap';编解码器可以';t编码字符,python,character-encoding,codec,pypyodbc,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
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”编解码器无法对2742位置的字符“\u0161”进行编码:字符映射到
我在这里看到了许多类似问题的其他答案,然后用谷歌搜索了它;但是,我对Python和字符编码都不够精通,不知道在哪里需要使用编解码器模块来更改用于显示/附加/创建列表的字符集
是否有人不仅可以帮助我编写代码,还可以直接向我介绍一些好的阅读材料来理解这类事情?如果您使用的是Python 2.x,请在代码中添加以下几行:
'charmap' codec can't encode character '\u0161' in position 2742: character maps to <undefined>
注意:如果您使用的是Python 3.x,则重载不是内置的,而是imp.relad(),因此需要添加导入才能使我的解决方案正常工作。我不在3.x中开发,因此我的建议是:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
将其置于所有其他导入之前。如果您使用的是Python 2.x,请在代码中添加以下行:
'charmap' codec can't encode character '\u0161' in position 2742: character maps to <undefined>
注意:如果您使用的是Python 3.x,则重载不是内置的,而是imp.relad(),因此需要添加导入才能使我的解决方案正常工作。我不在3.x中开发,因此我的建议是:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
将此项放在所有其他导入之前。哪一行可能重复引发异常?另外。什么操作系统?Windows 10不幸的是,我想使用一些linux发行版,但我已经有好几年没有使用linux了,我需要相对快速地完成这项工作,并且不能因为学习新的操作系统而使我的问题更加复杂。引发异常的那一行是最后一行,print(ghsWordList),它似乎是显示字符的问题,而不是用代码固有地处理字符(因为我能够将它们导出到access数据库和xls,并且它们在那里正确显示)哪一行可能会引发异常?还有。什么操作系统?Windows 10不幸的是,我想使用一些linux发行版,但我已经有好几年没有使用linux了,我需要相对快速地完成这项工作,并且不能因为学习新的操作系统而使我的问题更加复杂。引发异常的那一行是最后一行print(ghsWordList),它似乎是显示字符的问题,而不是用代码本身处理字符(因为我能够将它们导出到access数据库和xls,并且它们在那里正确显示),而这可能会避免UnicodeError,如果打印任何非ASCII字符,它可能会在控制台上打印mojibake。谢谢您的回答!我尝试了这个,但没有成功,我发现“名称重新加载未定义”是一个错误。Samuel Jackson,查看上面我答案的扩展。感谢您的帮助。似乎在对你的建议做了一点研究之后;一旦您通过3.4.1,它将再次更改为import importlib,这似乎仍然不起作用。不,不,不!设置
sys.setdefaultencoding()
对于那些不了解Python编码工作原理的人来说是一个难题。请不要用它!虽然这可能会避免UnicodeCodeer错误,但如果打印了任何非ASCII字符,它可能会在控制台上打印mojibake。谢谢您的回答!我尝试了这个,但没有成功,我发现“名称重新加载未定义”是一个错误。Samuel Jackson,查看上面我答案的扩展。感谢您的帮助。似乎在对你的建议做了一点研究之后;一旦您通过3.4.1,它将再次更改为import importlib,这似乎仍然不起作用。不,不,不!设置sys.setdefaultencoding()
对于那些不了解Python编码工作原理的人来说是一个难题。请不要用它!