0

と を使用xlrdしてcx_freezeいます。

Excelファイルから読み取ろうとすると、「、」マークになるとエラーが表示されます。

UnicodeEncodeError: 'charmap' codec can't encode character "\u2019" in position 12: character maps to <undefined>

from xlrd3 import *
book= open_workbook('s1.xls')
sheet=book.sheet_by_index(0)
import sys
from encodings import *
from codecs import *
def pr():
    global row,col
    if isinstance((sheet.cell(row,col).value), float):
        cell = sheet.cell(row,col)
        cell_value = cell.value
        cell_value1= int(cell.value)
        s=[]
        s.append(cell_value1)
        print (s)
        s=[]
    else:
        cell = sheet.cell(row,col)
        cell_value = cell.value
        s=[]
        s.append(cell_value)
        print (s)
        s=[]

def co():
    x=input("'S'earch again or 'Q'uite?: ")
    if x == 'S' or x=='s':
        search()
    elif x == 'Q'or x == 'q':
        sys.exit(0)
    else:
        print ('Please enter a Vailed answer: ')
        co()

def search():
    global row,col
    s=[]
    a=(input("Enter Search : "))
    for row in range(sheet.nrows):
        for col in range(sheet.ncols):
            s.append(str(sheet.cell(row,col).value))
            if a in (str(sheet.cell(row,col).value)):
                for col in range(sheet.ncols):
                    pr()    
            else:
                s=[]
    co()

search() 

これがコードです

4

1 に答える 1

1

エラーが発生したコード行は表示されません。完全なトレースバックは、エラー メッセージのみを表示するよりもはるかに有益です。

UnicodeEncodeError (注: このスレッドにタイトルを付けた「UnicodeEncodingError」ではありません) は、Unicode 文字列があり、それを不明なエンコーディング メソッドをサポートするものに渡している場合によく発生します。ここで最も可能性の高い状況は、印刷物にあります。これが問題の原因であるかどうかは、トレースバックでわかります。

問題は、Python が非 ASCII Unicode 文字を端末に出力する方法を知らないことです。この場合は、'\u2019' という文字が含まれているためです。これは正しい単一引用符です。(コンマである「、」マークではありません。)

端末に適した一連のバイトとして Unicode をエンコードする方法を指定する必要があります。具体的には、Windows 端末です。これにより、Python でのエンコード エラーの防止で説明されている問題と、ここでエラー メッセージを検索するときに得られる数十の他の投稿に問題が軽減されます。

あなたはWindowsを使用しているので、「Pythonでのエンコードエラーを防ぐ」リンクからのアドバイスを受けて、次のことを行います。

print(s.encode('cp850', errors='replace'))
于 2012-12-04T20:01:00.030 に答える