用 pyExcelerate 写特殊字符?如何保持utf-8编码?
Writing special chäracters with pyExcelerate? How to keep utf-8 encoding?
我想将数据从 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)
很简单,通过使用 Unicode 文字为您的 Dataframe 提供 Unicode:
df = pd.DataFrame({u'val': [u'ä']})
注意 u
前缀
确保您的文件使用 UTF-8 编码(以匹配 # -*- coding: utf-8 -*-
header)(它看起来确实是 UTF-8 编码,因为 0xc3
是 [= 的第一个字节14=])
错误是由于 Python 不知道字节字符串的编码,稍后将字符串编组为 Unicode object。
我想将数据从 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)
很简单,通过使用 Unicode 文字为您的 Dataframe 提供 Unicode:
df = pd.DataFrame({u'val': [u'ä']})
注意 u
前缀
确保您的文件使用 UTF-8 编码(以匹配 # -*- coding: utf-8 -*-
header)(它看起来确实是 UTF-8 编码,因为 0xc3
是 [= 的第一个字节14=])
错误是由于 Python 不知道字节字符串的编码,稍后将字符串编组为 Unicode object。