2013-03-06 70 views
1

這應該是非常簡單的事情,但我似乎無法在任何地方找到答案。這裏的基本問題:使用奇怪的符號字符串註釋圖形

我有一組的形式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顯示文字必須包含所有代碼點< 128或使用Unicode字符串

顯然問題是\ xb0C作爲度符號。我試過用unicode字符串替換符號,但是什麼都不做。如何更改此字符串以使註釋包含學位符號?

編輯:我縮小了我的問題一點點。如何告訴字符串的編碼?這是一個非常基本的問題,但我仍然無法找到答案(這往往是如何的)。鏈接到良好的文檔將有所幫助。

+0

你是如何嘗試使字符串unicode? – tacaswell 2013-03-06 15:06:48

+0

問題的一部分是我是使用unicode的新手。我很難將字符串轉換爲unicode。 我已經嘗試了一堆愚蠢的東西,如unicode(字符串),所有拋出:UnicodeDecodeError:'ascii'編解碼器無法解碼位置3中的字節0xb0:序號不在範圍內(128) – 2013-03-06 15:18:18

+0

我試圖轉換這個字符串(有些很愚蠢): 'code'string =「T \ xb0C」,tmp = unicode(string),tmp = unicode(string,encoding =「utf-8」),tmp = unicode(string,encoding =「utf-16」),tmp = unicode(string,encoding =「utf-32」) – 2013-03-06 15:44:02

回答

1

\xb0格式不正確utf-8,這是這裏的問題。用\xc2\xb0代替\xb0允許utf-8正確地對字符串進行編碼。