如何处理pandas和打印屏幕的Unicode字符?
我正在处理包含一系列unicode字符(勒索软件名称)的电子表格。
目前我有以下几点:
import urllib.request import pandas as pd SOURCESHEET = 'https://docs.google.com/spreadsheets/d/1TWS238xacAto-fLKh1n5uTsdijWdCEsGIM0Y0Hvmc5g/pub?output=xlsx' WORKBOOK = 'RansomwareOverview.xlsx' # download and save ransomware overview file locally try: urllib.request.urlretrieve(SOURCESHEET, WORKBOOK) except IOError: print('An error occured trying to write an updated spreadsheet. Do you already have it open?') except urllib.error.URLError: print('An error occured trying to download the file. Please check the source and try again') sheet = pd.read_excel(open(WORKBOOK,'rb'), sheetname='Ransomware') print(sheet)
当我尝试print
表格的内容时,我收到以下内容:
Traceback(最近一次调用的最后一个):第27行的文件“GoogleSpreadsheetToJson.py”在print(sheet)文件的“C:\ Python34 \ lib \ encodings \ cp850.py”中,第19行,编码返回codecs.charmap_encode(input ,self.errors,encoding_map)[0] UnicodeEncodeError:'charmap'编解码器无法对位置10917-10922中的字符进行编码:字符映射到
我相信这是因为我正在使用的工作表具有以下属性:
“ПРОЧТИ_МЕНЯ.txtREAD_ME.txt”
有办法我可以处理,或者还可以在我的电子表格中使用pandas吗?
一些选项:
- 切换到Python 3.6,它使用Windows的Unicode API写入到控制台,而不是尝试编码,以cp850(控制台的系统默认编码)输出。
- 使用
chcp 65001
(UTF-8)更改控制台编码。 - 设置环境variables
pythonioencoding=cp850:replace
在运行脚本之前进行pythonioencoding=cp850:replace
。 这将error handling程序从strict
更改为replace
。 你会得到cp850不支持的字符的问号。