我尝试使用python中的字符串元素创建数组。如何将带下划线的字符串转换为unicode?
a = array('u',["sub_id","datetime"])
Python的节目类型错误:数组项目必须是Unicode字符创建的阵列
原因是与要求发送。我使用一些产品的JSON rest API并发送请求,但它说这个参数必须是一个数组。(元组和列表不适合)
我使用python 3.4.4,我该如何解决这个问题?
我尝试使用python中的字符串元素创建数组。如何将带下划线的字符串转换为unicode?
a = array('u',["sub_id","datetime"])
Python的节目类型错误:数组项目必须是Unicode字符创建的阵列
原因是与要求发送。我使用一些产品的JSON rest API并发送请求,但它说这个参数必须是一个数组。(元组和列表不适合)
我使用python 3.4.4,我该如何解决这个问题?
类型代码'u'
的数组在Python 3中已被弃用,您应该很少需要使用它们。
在这种特殊情况下,这似乎是一个特别糟糕的主意,因为Unicode字符数组的字符数组,不串的阵列。您不能创建一个由多个Unicode字符串组成的数组。如果您使用的API需要多个字符串的列表,那么它不希望您使用Python array
。
JSON调用“数组”的方式与Python调用“列表”非常相似。实际上你应该做的是创建一个包含所有字符串的Python列表,如["sub_id","datetime"]
,然后使用Python的json
module将Python列表编码为包含数组的JSON文档。
该问题与下划线无关。
您不需要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实际上需要一个字符串列表。
它不适合 –
那么你应该在问题中包含它。 –
你是在Py 2还是3? – patrick
奇怪的是,当我运行你的代码时,我没有得到TypeError,我得到'NameError:name'数组'没有被定义。这是你正在运行的完整代码吗? – Kevin
@Kevin你需要'进口数组' – patrick