Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python编码NLTK-';charmap';编解码器可以';t编码字符_Python_Character Encoding_Codec_Pypyodbc - Fatal编程技术网

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编码工作原理的人来说是一个难题。请不要用它!