簡體   English   中英

Python編碼NLTK-'charmap'編解碼器無法編碼字符

[英]Python Encoding NLTK - 'charmap' codec can't encode character

   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字符編碼都不了解,因此我不知道需要在哪里使用編解碼器模塊來更改用於顯示/追加/創建列表的字符集?

有人不僅可以幫助我提供代碼,還可以為我提供一些了解此類知識的直接閱讀材料嗎?

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

將其放在所有其他進口商品的前面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM