2

这应该是一件非常简单的事情,但我似乎无法在任何地方的论坛中找到答案。这是基本问题:

我有一组格式为 CSV 文件:

"X,温度 °C\n1,25\n..."

请注意学位符号,这将是我问题的核心。我正在使用 numpy 和 matplotlib,并使用以下命令导入此文件:

GT_kwargs = dict(delimiter=',',names=True)
data_array = numpy.genfromtxt(filenm, **GT_kwargs)

这会正确生成一个带有 dtypes 的 numpy 数组:

[('X', '<f8'), ('Temp_\xb0C', '<f8')]

到目前为止,一切都很好。数据绘制得很好,当我想使用从标题中提取的名称来注释曲线时,问题就来了,特别是如果我尝试通过:

pyplot.annotate(data_array.dtype.names[1], xy=(1,1))

这抛出:

ValueError: matplotlib display text must have all code points < 128 or use Unicode strings

显然问题是 \xb0C 作为度数符号。我试过用 unicode 字符串替换符号,但这没有任何作用。如何更改此字符串以使注释包含度数符号?

编辑:我已经缩小了我的问题一点。如何判断字符串的编码?这是一个非常基本的问题,但我仍然找不到答案(通常是这样)。指向良好文档的链接会有所帮助。

4

1 回答 1

1

\xb0是格式错误的 utf-8,这是这里的问题。替换\xb0\xc2\xb0允许utf-8正确编码字符串。

于 2013-03-07T17:33:16.243 回答