2017-07-07 5 views
0

Ich versuche, Array mit String-Elementen in Python zu erstellen.Wie konvertiere ich einen String mit Unterstrich in Unicode?

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

Python zeigen Typeerror: Array Artikel Unicode-Zeichen

Grund des Create Array sein muss, ist es mit Anfrage zu senden. Ich benutze Rest-API mit JSON eines Produkts und sende Anfrage, aber es besagt, dass dieser Parameter ein Array sein muss. (Tupel und Liste passen nicht)

Ich benutze Python 3.4.4, Wie kann ich das beheben?

+1

sind Sie auf Py 2 oder 3? – patrick

+0

Seltsam, wenn ich Ihren Code ausführen, bekomme ich TypeError nicht, ich bekomme 'NameError: Name 'Array' ist nicht definiert. Ist dies der genaue vollständige Code, den Sie ausführen? – Kevin

+0

@Kevin müssen Sie "Array importieren" – patrick

Antwort

2

Arrays mit dem Typencode 'u' sind in Python 3 veraltet und sollten nur noch selten verwendet werden.

In diesem speziellen Fall scheint es wie eine besonders schlechte Idee, weil Arrays von Unicode-Zeichen-Arrays von Zeichen ist, nicht Arrays von Strings. Sie können kein Array mit mehreren Unicode-Strings erstellen. Wenn die von Ihnen verwendete API eine Liste mit mehreren Zeichenfolgen benötigt, sollten Sie kein Python array verwenden.


Was JSON einen „Array“ nennt, ist sehr ähnlich zu dem, was Python ruft eine „Liste“. Was Sie eigentlich tun sollten, ist eine Python-Liste aller Ihrer Strings zu erstellen, wie ["sub_id","datetime"], und dann Pythons json module zu verwenden, um die Python-Liste in ein JSON-Dokument zu codieren, das ein Array enthält.

3

Das Problem hat nichts mit dem Unterstrich zu tun.

Sie benötigen keine eckigen Klammern für Arrays vom Typcode 'u'; Unicode-Objekte sind iterable:

>>> 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') 

Diese unterscheiden sich für numerische Typen ist, da sie nicht iterable sind, und Sie müssen die iterable von Zahlen über eine Liste zu übergeben.

Mit Python 3.4-Version enthalten, ich bin der Meinung, dass Ihre API tatsächlich eine Liste von Zeichenfolgen will.

+0

Es ist nicht geeignet –

+0

Dann sollten Sie das in die Frage aufgenommen haben. –

Verwandte Themen