我想從熊貓數據框寫入數據到Excel文件。我使用pyExcelerate而不是內置的to_excel()方法來獲得更好的性能。用pyExcelerate編寫特殊字符?如何保持utf-8編碼?
雖然Pandas處理utf-8編碼的特殊字符,但編碼在轉換爲python列表時似乎會丟失。 我通過https://docs.python.org/2/howto/unicode.html閱讀,但我無法找到如何保留編碼。或者有什麼方法可以在編寫時恢復編碼?
# -*- coding: utf-8 -*-
import pandas as pd
from pyexcelerate import Workbook
df = pd.DataFrame({'val': ['ä']})
print df
# val
# 0 ä <- non ascii character a with dots
value = df.values.tolist()
print value
# [['\xc3\xa4']]
wb = Workbook()
ws = wb.new_sheet("sheet name", data=value)
wb.save("output.xlsx")
# UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 31: ordinal not in range(128)
你偶然會在文件頂部有'# - * - coding:utf-8 - * - '?從[這裏](http://stackoverflow.com/questions/10589620/syntaxerror-non-ascii-character-xa3-in-file-when-function-returns-%C2%A3) –
FWIW,''\ xc3 \ xa4'是_'的UTF-8編碼;如果我們將它解碼爲Unicode(例如''\ xc3 \ xa4'.decode('utf8')'),我們會得到'u'\ xe4''。您可能會發現這篇文章有用:[Pragmatic Unicode](http://nedbatchelder.com/text/unipain.html),它由SO老將Ned Batchelder編寫。 –
'# - * - coding:utf-8 - * - '在代碼中(編輯我的示例)。如果它不在那裏,我已經在創建DataFrame時出錯。 – malte