这应该是非常简单的事情,但我似乎无法在任何地方找到答案。这是基本问题:
我有一组格式为
的CSV文件“X,Temp°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显示文本必须包含所有代码点&lt; 128或使用Unicode字符串
显然问题是\ xb0C作为学位标志。我尝试用unicode字符串替换符号,但这没有任何作用。如何更改此字符串以使注释包含度数符号?
编辑:我已经缩小了我的问题。如何告诉字符串的编码?这是一个非常基本的问题,但我仍然找不到答案(通常是这样的)。提供良好文档的链接会很有帮助。答案 0 :(得分:1)
\xb0
格式错误 utf-8 ,这就是问题所在。用\xb0
替换\xc2\xb0
允许 utf-8 正确编码字符串。