【发布时间】:2016-02-16 13:58:01
【问题描述】:
我想将 Pandas 数据框中的数据写入 Excel 文件。我使用 pyExcelerate 而不是内置的 to_excel() 方法来获得更好的性能。
虽然 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 -*-?来自here -
FWIW,
'\xc3\xa4'是'ä'的UTF-8编码;如果我们将其解码为 Unicode(例如'\xc3\xa4'.decode('utf8')),我们会得到u'\xe4'。您可能会发现这篇文章很有帮助:Pragmatic Unicode,由 SO 资深人士 Ned Batchelder 撰写。 -
# -*- coding: utf-8 -*-在代码中(编辑了我的示例)。如果它不存在,我已经在创建 DataFrame 时遇到错误。
标签: python pandas utf-8 python-2.x pyexcelerate