2017-07-07 177 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

那么你应该在问题中包含它。 –

相关问题