Python Pandas to_html 无法打印 utf-8 字符

Posted

技术标签:

【中文标题】Python Pandas to_html 无法打印 utf-8 字符【英文标题】:Python Pandas to_html can't print utf-8 characters 【发布时间】:2015-05-20 18:32:52 【问题描述】:

我尝试打印一些 UTF 8 字符,但是当我发出以下代码时

csv = 'name\n"BOVÉR, LIÙSAIDH"'
`df = pandas.DataFrame.from_csv( StringIO(csv), index_col=False, encoding='utf-8')
print df.to_html()

我收到如下错误

UnicodeEncodeError: 'ascii' codec can't encode character u'\xc9' in position 260: ordinal not in range(128)

我尝试添加强制 unicode 标志,但这并没有改变任何东西。有什么建议吗?

【问题讨论】:

在 python 3.4 上使用 pandas 0.15.2 为我工作你在使用 python 2 吗? 这是 2012 年关于 the issue 的小讨论,现已结束。 【参考方案1】:

这个问题不够精确,无法提供明确的答案。关于文件和字符串编码、pandas 版本以及特定错误来自何处的问题仍然存在。但是那里有足够的东西来构建一个 MCVE 来评估 python 和 python3 解释器上的问题。

几件事情要做:

from_csv() 在最近的 pandas 中已过时。尽早使用read_csv() 考虑到正在使用的 pandas 版本,尽可能可行 PEP-0263 源文件编码以便 MCVE 可以工作 将测试数据设为 unicode 字符串
# -*- coding: utf-8 -*-
import pandas as pd
from io import StringIO
import sys

print(sys.version)
print(pd.__version__)

csv = u'name\n"BOVÉR, LIÙSAIDH"'
print(type(csv))
df = pd.read_csv(StringIO(csv), index_col=False, encoding='utf-8')
print(df.to_html())

python2.7运行:

python unicode_to_html.py 
2.7.16 (default, Mar 19 2019, 10:44:02) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)]
0.20.3
<type 'unicode'>
...snip...
      <td>BOVÉR, LIÙSAIDH</td>
...snip...

python3 运行:

python3 unicode_to_html.py 
3.7.2 (default, Mar 19 2019, 10:33:22) 
[Clang 10.0.0 (clang-1000.11.45.5)]
0.24.2
<class 'str'>
...snip...
      <td>BOVÉR, LIÙSAIDH</td>
...snip...

【讨论】:

大声笑...我怎么没注意到这是 2015 年的?!好吧,你来了。

以上是关于Python Pandas to_html 无法打印 utf-8 字符的主要内容,如果未能解决你的问题,请参考以下文章

`pandas.DataFrame.to_html()` 没有 `table border` 和 `tr style`

pandas DataFrame to_html中的粗体列

Pandas Dataframes to_html:突出显示表格行

如何使用 Pandas to_html 将相同的 html bg 颜色应用于所有列

从通过 pandas 创建的 html 表中删除边框

pandas哪个版本好