2017-07-07 40 views
0

我嘗試使用python中的字符串元素創建數組。如何將帶下劃線的字符串轉換爲unicode?

a = array('u',["sub_id","datetime"]) 

Python的節目類型錯誤:數組項目必須是Unicode字符創建的陣列

原因是與要求發送。我使用一些產品的JSON rest API併發送請求,但它說這個參數必須是一個數組。(元組和列表不適合)

我使用python 3.4.4,我該如何解決這個問題?

+1

你是在Py 2還是3? – patrick

+0

奇怪的是,當我運行你的代碼時,我沒有得到TypeError,我得到'NameError:name'數組'沒有被定義。這是你正在運行的完整代碼嗎? – Kevin

+0

@Kevin你需要'進口數組' – patrick

回答

2

類型代碼'u'的數組在Python 3中已被棄用,您應該很少需要使用它們。

在這種特殊情況下,這似乎是一個特別糟糕的主意,因爲Unicode字符數組的字符數組,不的陣列。您不能創建一個由多個Unicode字符串組成的數組。如果您使用的API需要多個字符串的列表,那麼它不希望您使用Python array


JSON調用「數組」的方式與Python調用「列表」非常相似。實際上你應該做的是創建一個包含所有字符串的Python列表,如["sub_id","datetime"],然後使用Python的json module將Python列表編碼爲包含數組的JSON文檔。

3

該問題與下劃線無關。

您不需要typecode的數組的方括號'u'; Unicode對象是可迭代:

>>> a = array('u', u'sub_id') 
>>> a.append(u'g') 
>>> a 
array('u', u'sub_idg') 

>>> a = array('u', u'sub_id datetime') 
>>> a.extend(u' time') 
>>> a 
array('u', u'sub_id datetime time') 

,因爲它們不是可迭代這是數值類型不同,你需要通過一個列表來傳遞數字的迭代。


隨着Python 3.4版本的包含,我開始認爲你的API實際上需要一個字符串列表。

+0

它不適合 –

+0

那麼你應該在問題中包含它。 –

相關問題